这是什么:
bool ready;
boost::mutex mutex;
boost::condition_variable cond;
boost::unique_lock<boost::mutex> lock(mutex);
cond.wait(lock,[]{return ready;});
第二个参数对我来说看起来很陌生。有人可以给我提示吗?
问候 跃然
最佳答案
除了其他回答者之外,我还要补充一点,这显然与 condition_variables 有很大关系。
具体来说,避免虚假唤醒
条件谓词完成的是它将保证
- 只有当条件谓词真正满足时才返回
- 如果在等待之前条件已经满足,则不会阻塞条件变量。
这样做可以确保在适当的时间持有锁。您可以手动编写此代码,但这会很乏味且容易出错。
事实上,在很多情况下,人们只是忘记了等待(当条件已经满足时等待简历)和虚假唤醒。
关于c++ - condition_variable 等待参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23513659/