【发布时间】:2011-04-19 05:53:35
【问题描述】:
我注意到,当我对条件变量执行等待操作时,它会立即返回。结果是,当执行以下虚拟代码时,一个 CPU 的 100% 正在循环中使用:
int main(void) {
boost::condition_variable cond;
boost::mutex mut;
bool data_ready = false;
boost::unique_lock<boost::mutex> lock(mut);
while (!data_ready) {
cond.wait(lock);
}
return 1;
}
我希望对cond.wait(lock) 的调用将线程置于不消耗任何CPU 的状态,但事实并非如此。
那么问题出在哪里?我从 boost 文档中获取了上面的代码。
(我使用的是 boost 1.44)
谢谢,
纪尧姆
【问题讨论】:
标签: c++ multithreading boost boost-thread condition-variable