加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何将事件发送到多个线程

发布时间:2020-12-16 09:37:56 所属栏目:百科 来源:网络整理
导读:如何将事件发送到我的应用程序的几个正在运行的线程? 例如:我的主线程想要通知应用程序将退出的所有正在运行的线程. 我有点困惑哪些可能性导致一个简单可靠的解决方案: condition_variable,来自boost的notify_all CONDITION_VARIABLE与WinApi中的WakeAllC
如何将事件发送到我的应用程序的几个正在运行的线程?

例如:我的主线程想要通知应用程序将退出的所有正在运行的线程.

我有点困惑哪些可能性导致一个简单可靠的解决方案:

> condition_variable,来自boost的notify_all
> CONDITION_VARIABLE与WinApi中的WakeAllConditionsVariable
>来自WinApi的CEvent
>在线程上使用互斥锁和try_lock
>来自升压的信号和插槽
>甚至是带有CriticalSection的全局变量,用于保护getter / setter
>在此插入您的解决方案……

你能指出一个初学者正确的方向,也许还有一些关于我提供的可能性的话.

补充: – 操作系统是Windows XP

解决方法

鉴于您希望“发出应用程序将退出的所有正在运行的线程的信号”,手动重置甚至可以解决问题.

您需要让每个线程偶尔检查一次事件,并在事件已发出信号后退出.

然后,您只需发出事件信号并等待线程完成(如果需要).

如果您需要多次执行此操作会更复杂,因为必须手动重置手动重置事件,并且您需要更多代码以确保每个线程在重置事件之前都收到通知,以便在后续通知中使用,但是鉴于你的问题,这将工作得很好.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读