多生产者-多消费者问题

多生产者-多消费者问题

一、问题背景及分析

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

image

二、问题实现

image

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

三、问题思考

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

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

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

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

image

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