“生产者-消费者”问题
问题描述
- 问题描述
- 问题分析
-
- 关系分析
- 求解思路
- 信号量设置
- 问题解决
- Java实现
- 复杂情况的求解示例
一组生产者进程和一组消费者进程共享一个初始为空、大小为n的缓冲区。 只有缓冲区没满时,生产者才能把消息放入缓冲区,否则必须等待;只有缓冲区不空时,消费者才能从其中取出消息,否则必须等待。 由于缓冲区是临界资源,它只允许一个生产者放入消息,或者一个消费者从中取出消息。
问题分析 关系分析生产者和消费者对缓冲区的访问是互斥关系;生产者和消费者还是一个相互协作的关系,生产者生产后消费者才能消费,故是同步关系。
求解思路只有生产者和消费者两个进程,这两个进程存在互斥和同步的关系,需要解决的重点就是互斥和同步的PV操作的位置。
信号量设置需要三个信号量:
- mutex:互斥信号量,用于控制互斥访问缓冲池,初始值为1