生产者-消费者问题¶
来源:
操作系统 / note/进程管理/进程通信/生产者-消费者问题.md
上级:进程通信
生产者-消费者问题描述多个生产者向缓冲区放入数据,多个消费者从缓冲区取出数据时的同步与互斥。
约束¶
- 缓冲区满时,生产者不能继续放入数据。
- 缓冲区空时,消费者不能继续取出数据。
- 同一时刻只能有一个执行流修改缓冲区状态。
信号量思路¶
- mutex:二元信号量,保护缓冲区互斥访问。
- empty:计数信号量,表示空缓冲区数量。
- full:计数信号量,表示已有产品数量。
操作顺序¶
生产者通常先 P(empty),再 P(mutex),放入数据后 V(mutex),最后 V(full)。
消费者通常先 P(full),再 P(mutex),取出数据后 V(mutex),最后 V(empty)。