我正在以这种方式使用condition_variable,但我想知道是否需要一个循环来防止虚假唤醒或谓词足以保护。
unique_lock<mutex> lock(mu_); //OPTION1
cv_.wait(lock)
// dosomething
是否需要这种保护?
while( !check_predicate() ) //OPTION2
{
cv_.wait(lock)
}
// dosomething
或者,如果此谓词足以保护
cv_.wait(lock,[](){ return check_predicate(); }; //OPTION3