如何将事件发送到应用程序的多个运行线程?
例如:我的主线程想要向所有正在运行的线程发出应用程序将退出的信号。
我有点困惑,哪些可能性导致了一个简单可靠的解决方案:
condition_variable
和来自boost
的 CONDITION_VARIABLE
和来自 WinApi 的WakeAllConditionsVariable
CEvent
来自 WinApi- 在线程上使用
mutex
和try_lock
signal
和slots
来自boost
- 或者甚至是一个带有
CriticalSection
的全局变量来保护getter/setter - 在此处插入您的解决方案...
notify_all
您能否为初学者指出正确的方向,并可能对我提供的上述可能性说几句。
添加:- 操作系统是 Windows XP
最佳答案
如果您想“向所有正在运行的线程发出应用程序将退出的信号”,手动重置甚至可以解决问题。
您需要让每个线程偶尔检查事件并在事件已发出信号时退出。
然后,您只需向事件发出信号,并在需要时等待线程完成。
如果您需要多次执行此操作会更加复杂,因为必须手动重置手动重置事件,并且您需要更多代码来确保在重置事件之前每个线程都收到通知以供后续使用通知,但考虑到你的问题,这会工作得很好。
关于c++ - 如何向多个线程发送事件信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7831753/