c++ - 如何向多个线程发送事件信号

标签 c++ windows boost

如何将事件发送到应用程序的多个运行线程?

例如:我的主线程想要向所有正在运行的线程发出应用程序将退出的信号。

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

  • condition_variable 和来自 boost
  • notify_all
  • CONDITION_VARIABLE 和来自 WinApi 的 WakeAllConditionsVariable
  • CEvent 来自 WinApi
  • 在线程上使用mutextry_lock
  • signalslots 来自 boost
  • 或者甚至是一个带有CriticalSection的全局变量来保护getter/setter
  • 在此处插入您的解决方案...

您能否为初学者指出正确的方向,并可能对我提供的上述可能性说几句。

添加:- 操作系统是 Windows XP

最佳答案

如果您想“向所有正在运行的线程发出应用程序将退出的信号”,手动重置甚至可以解决问题。

您需要让每个线程偶尔检查事件并在事件已发出信号时退出。

然后,您只需向事件发出信号,并在需要时等待线程完成。

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

关于c++ - 如何向多个线程发送事件信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7831753/

相关文章:

c++ - 可 move 元素的 vector 会有效地调整大小吗?

c++ - 无法理解 gluLookAt 参数

c++ - Cin() 为用户预先键入 "y"

windows - 限制新创建的自签名证书的预期用途

windows - Graphviz:如何从 .dot 到图表?

c++ - 刷新 boost::iostreams::zlib_compressor。如何获得 "sync flush"?

c++ - 通过双击 Windows 中的文件调用命令行程序

windows - 如何使用 Windows Search 搜索 Jar 文件?

c++ - boost::shared_ptr 中的 ref_count

c++ boost map程序在删除后崩溃