C++11 并发编程之条件变量 std::condition_variable

本文介绍了C++11中std::condition_variable的使用,强调了它需要与mutex和std::unique_lock配合,用于线程的等待与唤醒。通过一个简单的例子展示了std::condition_variable的等待与通知机制。
摘要由CSDN通过智能技术生成

一、std::condition_variable

这玩意儿怎么使用呢

有个条件儿

它需要配合 mutex 来使用 std::unique_lock 进行上锁 / 解锁

它需要配合 mutex 来使用 std::unique_lock 进行上锁 / 解锁

它需要配合 mutex 来使用 std::unique_lock 进行上锁 / 解锁

std::condition_variable 对象调用 wait() 时, 它就使用 std::unique_lock 锁住当前线程

直到另外一个线程使用同一个 std::condition_variable 对象调用 notification 才会唤醒锁住线程

先来感性认识一下如何使用 std::condition_variable

二、简单例子

#include <iostream>
#include <thread>
#include <atomic>
#include <condition_variable>
#include <mutex>

std::mutex _mutex;                 /*线程锁*/
std::condition_variable cv;		   /*条件变量*/
std::atomic_int  productCnt = 0;   /*公共变量,产品库存数量*/
std::atomic_bool isReady = false;  /*公共变量,防止假性唤醒线程*/

/*生产产品*/
void Fu
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值