生产者消费者问题
优质
小牛编辑
146浏览
2023-12-01
所谓的生产者消费者模型就是
某个模块(函数)负责生产数据,这些数据由另一个模块来负责处理
一般生产者消费者模型包含三个部分 生产者、缓冲区、消费者
为什么生产者消费者模型要含三个部分?直接生产和消费不行么?
一个案例说明一切
- 生产者好比现实生活中的某个人
- 缓冲区好比现实生活中的邮箱
- 消费者好比现实生活中的邮递员
如果只有生产者和消费者, 那么相当于只有写信的人和邮递员,那么如果将来过去的邮递员离职了,你想邮寄信件必须想办法结识新的邮递员(消费者发生变化,会直接影响生产者,耦合性太强)
如果在生产者和消费者之间添加一个缓冲区,那么就好比有了邮箱,以后邮寄信件不是找邮递员,只需把信件投递到邮箱中即可,写信的人不需要关心邮递员是谁(解耦)
如果只有生产者和消费者,那么每个人邮寄信件都需要直接找邮递员(1对1关系),如果有10个人要邮寄信件,那么邮递员只能依次找到每个人, 然后才能取件(效率低下)
如果在生产者和消费者之间添加一个缓冲区,那么所有的人只需要将信件投递到邮箱即可,邮递员不用关心有多少人要邮寄信件,也不用依次取件,只需要找到邮箱从邮箱中统一取件即可(效率提高)
如果只有生产者和消费者,那么如果邮寄信件太多邮递员无法一次拿走,这个时候非常难办
如果在生产者和消费者之间添加一个缓冲区,那么如果信件太多可以先拿走一部分,剩下的继续放到邮箱中下次再拿