多生产者-多消费者问题

多生产者-多消费者问题

一、问题背景及分析

  • 这里的“多”指种类多而不是数量多。多种生产者和多种消费者共享同一片缓冲区,且一种消费者只接受特定的一种生产者生产的产品。

image

二、问题实现

image

同样,实现互斥的 P 操作一定要在实现同步的 P 操作之后,否则可能引起“死锁”。

三、问题思考

(一)不要 mutex 这个互斥信号量

仅本题可以,因为 plate = 1 (容量为1)较为特殊,即使不设置专门的互斥变量 mutex ,也不会出现多个进程同时访问盘子的现象(恰好发挥互斥信号量的作用)

但当 plate > 1时则不可。 在这里则可能导致父亲和母亲两个进程同时进入临界资源区且恰好同时向同一缓冲区写数据的情况。

(二)要尽可能地将问题抽象化简洁化

image

posted @ 2024-11-08 09:32  Wind_730  阅读(70)  评论(0)    收藏  举报