【发布时间】:2010-09-07 16:01:41
【问题描述】:
我有一个简单的线程问题 - 下面应该如何同步?
我有一个主线程和一个辅助线程,它们只做一次和某事 - 不止一次。
基本上:
次要线程:
{
Do_Something_Once();
while (not_important_condition) {
Do_Something_Inside_Loop();
}
}
我想暂停我的主线程,除非Do_Something_Once 操作完成,现在我使用纯布尔值is_something_once_done = false; 来指示操作是否完成。
因此,我的主线程的代码如下所示:
{
Launch_Secondary_Thread();
while (!is_something_once_done) {
boost::this_thread::sleep(milliseconds(25));
}
}
这显然不是执行此类同步的最佳方式。
任何替代方案(如果boost::thread - 供电更好)?
谢谢
【问题讨论】:
-
注意:没有基本的线程问题。有 11 种人: 1) 认为他们可以使用线程进行编程的人 10) 知道这很难但认为他们了解线程的人 11) 知道这很难并且理解线程之间的相互作用的人超出了他们(这些是唯一正确的人)
标签: c++ multithreading synchronization