我注意到,当我对条件变量执行等待操作时,它会立即返回。结果是,当执行以下虚拟代码时,一个 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 文档中获取了上面的代码。
(我正在使用提升 1.44)
谢谢,
纪尧姆