您当前的位置: 首页 >  ar
  • 0浏览

    0关注

    1477博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++ std::condition_variable wait() wait_for() 区别 怎么用 实例

软件工程小施同学 发布时间:2021-10-09 21:26:59 ,浏览量:0

一、std::condition_variable 是条件变量。

二、wait()

当 std::condition_variable 对象的某个 wait 函数被调用的时候,它使用 std::unique_lock(通过 std::mutex) 来锁住当前线程。当前线程会一直被阻塞,直到另外一个线程在相同的 std::condition_variable 对象上调用了 notification 函数来唤醒当前线程。

首先我们来看一个简单的例子

#include                 // std::cout
#include                 // std::thread
#include                 // std::mutex, std::unique_lock
#include     // std::condition_variable
 
std::mutex mtx;              // 全局互斥锁.
std::condition_variable cv;  // 全局条件变量.
bool ready = false;          // 全局标志位.
 
void do_print_id(int id)
{
    std::unique_lock  lck(mtx);
    while (!ready) // 如果标志位不为 true, 则等待...
        cv.wait(lck); // 当前线程被阻塞, 当全局标志位变为 true 之后,
    // 线程被唤醒, 继续往下执行打印线程编号id.
    std::cout             
关注
打赏
1665320866
查看更多评论
0.0538s