我正在考虑在我的应用程序中使用C++ 0x线程而不是Boost线程。然而,我不确定如何重新实现我的标准C++ 0x线程,因为它们似乎没有interrupt()
方法。如何中断一个正在等待的C++ 0x线程?
我目前的设置是:
- 管理工作的一个主线程;
- 几个执行主命令的工作线程。
工人在至少两个不同的条件变量上调用wait()
。师父有一个“超时”状态:在这种情况下,它告诉所有工作人员停止并给出他们当时得到的结果。使用Boost线程主机只在线程组上使用interrupt_all()
,这会导致工作人员停止等待。如果他们现在还没有等待,主人还会设置一个bool
标志,定期检查工人。
但是,在C++ 0x std::thread
我看不到任何替代interrupt()
。我想念什么?如果没有,我怎样才能落实上述计划,使工人不会永远睡眠?
我想我会继续使用Boost线程。他们也是越野车,但至少我对他们有一个稳定的解决方法。 – doublep 2010-05-17 13:47:09