吸烟者问题

吸烟者问题

一、问题背景及分析

即“可以生产多种产品的单生产者和多消费者”的问题。生产者可生产 A/B/C 产品,每种产品都有各自的不同种消费者接受。

image

image

注:这里的缓冲区容量为1,所以可以不设置 mutex 的互斥信号量(同一时刻,四个同步信号量中至多只有一个值为1)

二、问题实现

image

三、问题思考

(一)V 操作的位置

若一个生产者要生产多种产品(或者说引发多种前驱事件),那么各个 V 操作应该放在各自对应的“事件”发生之后的位置。

(二)轮流和随机的实现

生产者的生产是轮流还是随机以及具体实现需纳入考虑。最简单的比如轮流可以用 i = (i+1) % 3实现,随机可以用 i = Random(n) % 3 实现。

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