【发布时间】:2016-11-01 08:53:16
【问题描述】:
我有两个事件被两个事件处理程序触发和处理。
在EventHandler2 中启动boost::thread。
在 EventHandler2 中,应用程序通过调用 join() 来等待该线程完成。
这在快速计算机上运行良好,因为启动线程的事件总是首先被触发,然后是导致应用程序等待join() 的另一个事件。
但是,在旧机器上,事件以不同的顺序触发(因为在调用 EventHandler2 之前需要完成一些繁重的计算)。
所以EventHandler1首先被调用并且不等待,因为join()立即返回(线程还没有启动,因为第二个事件没有被触发)。
我在这里能做的最好的事情是什么?在调用join() 之前是否需要锁定一个互斥锁,然后等待它。这样,我可以确保在调用 join() 之前启动线程。
在这种情况下使用的最佳模式是什么?
谢谢!
【问题讨论】:
-
stackoverflow.com/questions/9094422/… ,长话短说:使用布尔值。
-
std::atomic<bool>可能就是您要找的...
标签: c++ multithreading boost-thread