生产者和消费者问题,又称缓存绑定问题、有限缓存问题。是一个经典的多线程同步问题
描述了共享固定大小缓冲区的两个线程(生产者线程和消费者线程)在实际运行中会遇到的问题。生产者线程产生一定量的数据放到缓冲区,消费者线程消耗生产者所产生的数据。
问题核心:
(1)生产者在缓冲区满的时候不会加入数据;
(2)消费者在缓冲区空的时候不会消耗数据;
问题分析:
(1)互斥访问:缓冲区是临界资源,一个时刻只允许一个生产者放入消息,或者一个消费者从中取出消息,属于互斥访问问题;
(2)同步访问:生产者和消费者又有一个相互协作的关系,只有生产者先生产数据,消费者才可以从中读出数据,解决同步问题。
解决模型: