生产者消费者问题 生产者消费者问题英語Producerconsumer problem也称有限缓冲问题Boundedbuffer problem是一个多进程同步问题的经典案例该问题描述了共享固定大小缓冲区的两个进程即所谓的生产者和消费者在实际运行时会发生的问题生产者的主要作用是生成一定量的数据放到缓冲区中然后重复此过程与此同时消费者也在缓冲区消耗这些数据该问题的关键就是要保证生产者不会在缓冲区满时加入数据消费者也不会在缓冲区中空时消耗数据 要解决该问题就必须让生产者在缓冲区满时休眠要么干脆就放弃数据等到下次消费者消耗缓冲区中的数据的时候生产者才能被唤醒开始往缓冲区添加数据同样也可以让消费者在缓冲区空时进入休眠等到生产者往缓冲区添加数据之后再唤醒消费者通常采用进程间通信的方法解决该问题常用的方法有信号灯法等如果解决方法不够完善则容易出现死锁的情况出现死锁时两个线程都会陷入休眠等待对方唤醒自己该问题也能被推广到多个生产者和消费者的情形