【并发编程十】c++线程同步——条件变量(condition_variable)
简介:
本篇文章,我们详细的介绍下c++标准库提供的线程同步方法——条件变量(condition_variable)。
一、互斥
二、条件变量
1、为何要引入条件变量?
- 例子
在一条生产线上有一个仓库,当生产者生产时需要锁住仓库独占,而消费者去产品时也需要锁住仓库独占。
如果,生产者发现仓库满了,那么他就不能生产了,编程了阻塞状态。但是此时生产者独占仓库,消费者又无法进入仓库消耗产品,这样就造成了一个僵死的状态。
我们需要一种机制,当互斥量被锁住以后发现当前线程还是无法完成自己的操作,那么它应该释放互斥量,让其他线程哦工作。
- 1、可以采用轮询的方式,不停的查询你需要的条件。
- 2、让系统来帮你查询条件,使用条件变量。