生产者消费者模式是一种设计模式,用于解决两个点(线程、进程、服务器)之间数据通信的协调问题。
生产数据的点叫生产者,使用数据的点叫消费者,生产者和消费者可能存在速度不一致的情况。生产者速度过快,消费者消费速度慢,会浪费大量资源;反过来,消费者速度快,生产者速度慢,消费者浪费时间取等待。
过程:
-
设置缓冲区,设定临界值
-
生产者生产数据,存入缓冲区,如果缓冲区达到临界值,生产者就等待;否则就通知消费者进行消费
-
消费者从缓冲区取出数据,如果缓冲区空了,消费者等待;否则就通知生产者继续生产
解决的问题:
1. 解耦,生产者和消费者之间加入缓冲区,不需要直接调用
2. 忙闲不均,协调生产者和消费者之间的速度
3. 节约资源,减少生产者资源的浪费,和消费者等待的时间