【发布时间】:2012-06-15 16:20:58
【问题描述】:
当一个线程在执行过程中被其他线程(可能由主线程)放到sleep 时会发生什么?
假设我有一个函数Producer。如果Consumersleep()s Producer 正在生产一个单元怎么办?
假设该单位生产了一半。然后它放在 sleep() 上。系统完整性可能存在问题
【问题讨论】:
-
我不知道一个线程可以命令另一个线程休眠...
-
可能有一些系统可以让你强制另一个线程休眠,但是在Boost.thread中,你不能指定一个线程作为
sleep的目标——它:"Suspends the current thread ..." [强调添加]。 -
好吧对不起,我不知道一个线程不能命令另一个线程进入睡眠状态。但是它可能会通过轮询来排队线程可能执行的顺序
-
@DiproSen:是的,您可以通过多种方式要求线程休眠。如果你这样做,它可以(例如)调用
sleep。如果/当它发生时,托尼的回答很好地涵盖了这种情况。
标签: c++ multithreading boost boost-thread