c++ - 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;});

第二个参数对我来说看起来很陌生。有人可以给我提示吗?

问候 跃然

最佳答案

除了其他回答者之外,我还要补充一点,这显然与 condition_variables 有很大关系。

具体来说,避免虚假唤醒

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

  • 只有当条件谓词真正满足时才返回
  • 如果在等待之前条件已经满足,则不会阻塞条件变量。

这样做可以确保在适当的时间持有锁。您可以手动编写此代码,但这会很乏味且容易出错。

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

关于c++ - condition_variable 等待参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23513659/

相关文章:

c++ - C/C++ 中的指针和数组

c++ - Arduino 将字符串拆分为带分隔符的数组

c++ - 只选择 Boost ptree 的节点

c++ - 如何将 boost 回调作为参数传递给方法?

c++ - 我如何使用 C++ 和 boost 创建看门狗定时器

c++ - std::condition_variable wait_for 无限

c++ - 在我的图实现中查找边数并执行拓扑排序

c++ - 如何使用 CDT 配置 Eclipse?

c++ - boost::condition::timed_wait 的使用示例

c - pthread_cond_wait 的空参数