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++