生产者、消费者(条件变量同步)
问题说明
生产者消费者问题(英语:Producer-consumer problem),也称有限缓冲问题(英语:Bounded-buffer problem),是一个多线程同步问题的经典案例。
该问题描述了两个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,消费者也在缓冲区消耗这些数据然后重复此过程。
该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区中空时消耗数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190814082436923.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQyMzY5OA==,size_16,color_FFFFFF,t_70)
方法步骤
1.创建一个共享区,共享区的容量为10(使用整型count变量模拟)
2.2个生产者,每个生产者消耗随机的时间单位生产1件商品并放入共享区(count自增1模拟),当共享区已满,生产者停止放入共享区,线程进入block阻塞状态,等待消费者线程唤醒。
3.5个消费者,每个消费者使用随机的时间单位每次从共享区获取1件商品(count自减1模拟),当共享区已空,消费者停止从共享区获取,线程进入block阻