zoukankan      html  css  js  c++  java
  • conditon_variable(条件变量)用于线程间同步

    conditon_variable(条件变量)用于线程间同步

    condition_variable有5个函数,函数名及对应的功能如下:

    wait阻塞自己,等待唤醒

    wait_for阻塞自己,等待唤醒,最多等待一段时间

    wait_until阻塞自己,等待唤醒,最多等待到某个时间点

    notify_one 唤醒一个等待在这个条件变量上的线程

    notify_all 唤醒所有等待在这个条件变量上的线程

    3个wait函数都要求输入一个已经上锁的unique_lock<mutex>变量,并且都有两个版本,一个版本接受一个比较器,而另一个没有。用wait来举例说明:

    void wait(unique_lock<mutex> &lck);

    template<class Predicate> void wait(unique_lock<mutex> &lck,Predicate pred);

    第二个版本可解决虚假唤醒的问题,其行为类似  while( !pred() ) wait(lck); 如果标准库不提供这个版本,我们就只能自己写这些代码了

    condition_variable_any与condition_variable基本一致,区别只是在于condition_variable要求的互斥锁只能用unique_lock<mutex> ,而condition_variable_any则不作限制。

  • 相关阅读:
    CSP-201512
    SCC-Tarjan
    CSP-201509
    Codeforces Round #612 (Div. 2)/A/B/C/D
    CF-Hello 2020/A/B/C
    Anaconda介绍、安装及使用教程
    Linux 新手应该知道的 26 个命令
    Python编码规范:IF中的多行条件
    Python assert 断言函数
    数据结构常见的八大排序算法(详细整理)
  • 原文地址:https://www.cnblogs.com/defe-learn/p/7008286.html
Copyright © 2011-2022 走看看