吸烟者问题
一、问题背景及分析
即“可以生产多种产品的单生产者和多消费者”的问题。生产者可生产 A/B/C 产品,每种产品都有各自的不同种消费者接受。
注:这里的缓冲区容量为1,所以可以不设置 mutex 的互斥信号量(同一时刻,四个同步信号量中至多只有一个值为1)
二、问题实现
三、问题思考
(一)V 操作的位置
若一个生产者要生产多种产品(或者说引发多种前驱事件),那么各个 V 操作应该放在各自对应的“事件”发生之后的位置。
(二)轮流和随机的实现
生产者的生产是轮流还是随机以及具体实现需纳入考虑。最简单的比如轮流可以用 i = (i+1) % 3实现,随机可以用 i = Random(n) % 3 实现。
标签:信号量,吸烟者,生产者,轮流,问题,随机 From: https://www.cnblogs.com/Wind730/p/18534460/smoking-problem-z1bty6q