我正在考虑在我的应用程序中使用 C++0x 线程而不是 Boost 线程。但是,我不确定如何使用标准 C++0x 线程重新实现我所拥有的,因为它们似乎没有interrupt()
方法。
我目前的设置是:
- 管理工作的主线程;
- 几个执行主命令的工作线程。
工人调用wait()
至少两个不同的条件变量。Master 有一个“超时”状态:在这种情况下,它告诉所有工作人员停止并给出他们当时得到的任何结果。使用 Boost 线程,master 只interrupt_all()
在线程组上使用,这会导致工作人员停止等待。如果他们现在没有等待,master 还会设置一个bool
标志,工人会定期检查。
但是,在 C++0x 中,std::thread
我看不到interrupt()
. 我错过了什么吗?如果没有,我该如何实施上述方案,使工人不能永远睡觉?