std::condition_variable::wait 一处细节
27 Feb 2019
|
|
std::condition_variable::wait 一处细节
简单说,是一个语法糖
template< class Predicate >
void wait( std::unique_lock<std::mutex>& lock, Predicate pred );
等价于
while (!pred()) {
wait(lock);
}
写过pthread_cond_wait 都明白第二种写法,为了避免虚假唤醒。
标准库还提供不带谓词的wait版本,如果不是用过底层api原语的很容易用错,写成if形式,所以提供了上面这个版本,比较优雅,while形式比较不容易表明意图。
还写了个最佳实践
http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconc-wait
话说这个我只是收藏了,从来没看完过,可以理解成more modern effective c++