- 问题描述
- 问题分析
- 如何实现
生产者进程在把产品放入缓冲区之前,需要检查是否有空闲缓冲区,执行P(empty)消耗一个空闲缓冲区;
当生产者把产品放入缓冲区之后,对产品数量信号量执行V(full)操作,增加一个产品。
消费者进程需要先检查是产品数量,执行P(full)消耗一个产品(或是非空缓冲区);
当消费者从缓冲区中取走一个产品之后,对空闲缓冲区执行V(empty)操作,增加一个空闲缓冲区。
注意在实现过程中:缓冲区是l临界资源,各进程必须互斥地访问,即在临界区之前、之后分别对互斥信号量执行P(mutex)、
V(mutex)操作。
注意:实现互斥的P操作一定要在实现同步的P操作之后
生产产品和使用产品代码段如果放在临界区,会降低进程之间并发度,所以不建议