吸烟者问题

吸烟者问题

一、问题背景及分析

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

image

image

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

二、问题实现

image

三、问题思考

(一)V 操作的位置

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

(二)轮流和随机的实现

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

posted @   Wind_730  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示