【并发编程十】c++线程同步——条件变量(condition_variable)

本文详细探讨C++中的条件变量(condition_variable),解释为何引入条件变量以解决线程同步问题,并通过示例说明其避免无效等待、提高CPU利用率的优势。文章涵盖条件变量的成员函数,如wait和notify_one,以及它们在实际应用中的作用。
摘要由CSDN通过智能技术生成

简介:
本篇文章,我们详细的介绍下c++标准库提供的线程同步方法——条件变量(condition_variable)。

一、互斥

参见【并发编程九】c++线程同步——互斥(mutex)

二、条件变量

1、为何要引入条件变量?

  • 例子
    在一条生产线上有一个仓库,当生产者生产时需要锁住仓库独占,而消费者去产品时也需要锁住仓库独占。
    如果,生产者发现仓库满了,那么他就不能生产了,编程了阻塞状态。但是此时生产者独占仓库,消费者又无法进入仓库消耗产品,这样就造成了一个僵死的状态。

我们需要一种机制,当互斥量被锁住以后发现当前线程还是无法完成自己的操作,那么它应该释放互斥量,让其他线程哦工作。

  • 1、可以采用轮询的方式,不停的查询你需要的条件。
  • 2、让系统来帮你查询条件,使用条件变量。

2、不使用条件变量

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑同学的笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值