Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 条件变量等待参数?_C++_Boost_Condition Variable - Fatal编程技术网

C++ 条件变量等待参数?

C++ 条件变量等待参数?,c++,boost,condition-variable,C++,Boost,Condition Variable,这是什么 bool ready; boost::mutex mutex; boost::condition_variable cond; boost::unique_lock<boost::mutex> lock(mutex); cond.wait(lock,[]{return ready;}); bool就绪; 互斥互斥; boost::条件变量cond; boost::唯一的锁(互斥锁); cond.wait(锁,[{return ready;}); 第二个参数对我来说似乎不

这是什么

bool ready;
boost::mutex mutex;
boost::condition_variable cond;
boost::unique_lock<boost::mutex> lock(mutex);
cond.wait(lock,[]{return ready;});
bool就绪;
互斥互斥;
boost::条件变量cond;
boost::唯一的锁(互斥锁);
cond.wait(锁,[{return ready;});
第二个参数对我来说似乎不熟悉。有人能给我一个提示吗

问候
Göran

除了其他答案之外,我还要补充一点,它显然与条件变量有很大关系

具体来说,避免虚假的唤醒

条件谓词完成的是它将保证

  • 仅在实际满足条件谓词时返回
  • 如果在等待之前已满足条件,则不阻塞条件变量
这样做可以确保锁在适当的时间保持。您可以手动编写,但这将是乏味和容易出错的


事实上,在许多情况下,人们只是忘记了快速等待(当条件已经满足时等待cv)和虚假唤醒。

这是一个lambda函数,请参阅