操作系统-生产者消费者问题(进程互斥问题)
问题描述:
生产者每次生产一个产品放入缓冲区
消费者每次从缓冲区取出一个产品使用
多个生产者生产的时候,要保证互斥的访问
分析:
1.确定进程: 生产者+消费者
2.分析同步,互斥关系
互斥:缓冲区是临界资源,各个进程必须互斥访问
同步:缓冲区没有满时,生产者才能把产品放入缓冲区
同步:缓冲区不空的时候,消费者才能从中取出产品,否则必须等待
3.生产者每次P(消耗)一个空闲缓冲区,
并且V(生产)一个产品
消费者:
每次P(消耗)一个产品
V(生产)一个缓冲区
实现
注意:
实现互斥的P操作一定要放在实现同步的P操作之后
V操作不会导致进程阻塞,两个V操作顺序可以交换