一、问题描述

二、如何实现

**注意:**该题中即使不设置专门的互斥变量mutex,也不会出现多个进程同时访问盘子的现象。

**原因在于:**本题中的缓冲区大小为1,在任意时刻,Apple、orange、plate三个同步信号量最多只有一个是1.因此在任何时刻,最多只有一个进程的P操作不会被阻塞,并顺利进入到临界区。

结论:在生产者消费者问题中,如果缓冲区大小为1,那么有可能不需要设置互斥信号量就可以实现互斥的访问缓冲区的功能。但如果缓冲区大小大于1,就必须专门设置一个互斥信号量mutex来保证互斥的访问缓冲区(不然可能导致两个资源同时访问一个缓冲区而导致覆盖)。

三、总结

十八、多生产者--多消费者问题相关推荐

  1. Python之路(第三十八篇) 并发编程:进程同步锁/互斥锁、信号量、事件、队列、生产者消费者模型...

    一.进程锁(同步锁/互斥锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 而共享带来的是竞争,竞争带来的结果就是错乱,如何控制,就是加锁处理. 例 ...

  2. 操作系统(二十五)吸烟者问题-单生产者多消费者问题

    2.3.8 吸烟者问题-单生产者多消费者问题 假设一个系统有三个抽烟者进程和一个供应者进程.每个抽烟者不停地卷烟并抽掉它,但是要卷起并抽掉一支烟,抽烟者需要有三种材料:烟草.纸和胶水.三个抽烟者中,第 ...

  3. 操作系统(二十四)多生产者多消费者问题

    2.3.7 多生产者多消费者问题   桌子上有一只盘子,每次只能向其中放入一个水果.爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,儿子专等着吃盘子中的橘子,女儿专等着吃盘子中的苹果.只有盘子空时,爸爸或 ...

  4. Java(二十二) -- 生产者消费者模式

    目录 生产者消费者模式 汉堡类 容器类 生产者 消费者 测试类 案例:多线程并发卖票 生产者消费者模式 在一个生产环境中,生产者和消费者在同一时间段内共享同一块缓冲区,生产者负责向缓冲区添加数据,消费 ...

  5. 【Linux篇】第十六篇——生产者消费者模型

    生产者消费者模型 生产者消费者模型的概念 生产者消费者模型的特点 生产者消费者模型优点 基于BlockingQueue的生产消费者模型 基于阻塞队列的生产者消费者模型 模拟实现基于阻塞队列的生产消费模 ...

  6. 二十八、信号量,事件,队列,生产消费者模型

    一.信号量 信号量:一套资源 同一时间 只能被n个人访问 某一段代码 同一时间 只能被n个进程执行,控制访问人数 Semaphore用上锁的原理实现的,内置了一个计数器,在同一时间 只能有指定数量的进 ...

  7. kafka maven 依赖_SpringBoot入门建站全系列(二十八)整合Kafka做日志监控

    SpringBoot入门建站全系列(二十八)整合Kafka做日志监控 一.概述 Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端 ...

  8. SpringBoot入门建站全系列(二十八)整合Kafka做日志监控

    SpringBoot入门建站全系列(二十八)整合Kafka做日志监控 一.概述 Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端 ...

  9. 第二十八条:利用有限制通配符来提升API的灵活性

    如第二十五条所述,参数化类型是不可变的.类型Type1和Type2而言,不管Type1与Type2的关系,List<Type1>既不是List<Type2>的子类型,也不是也不 ...

  10. 罗永浩:我今年四十八岁,还可以承受无数次的失败;iOS14 或将推出系统级「小程序」功能;​ PyCharm新版发布| 极客头条...

    整理 | 屠敏 头图 | CSDN 下载自视觉中国 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦, ...

最新文章

  1. C# 调用IP库(QQWry.Dat)查询IP位置及自动升级IP库方法(附IP库下载地址及相关dll下载)
  2. php判断是否为数字_PHP知识点:从'xulei' == 0是否为真谈谈运算符===和==
  3. 为初学者介绍10个最常被问到的Javascript问题
  4. 实战中的Agile开发
  5. python简单的爬虫程序代码_简单的电子邮件爬虫Python代码
  6. 网络安全实验三 PGP 实现邮件加密和签名
  7. C语言printf输出格式总结
  8. 慕课翁凯习题集答案01厘米转换为英尺,英寸问题
  9. 青少儿编程Python入门教程——Python基础知识库
  10. 删除bootcamp后扩充Mac分区
  11. 微服务:服务治理来保证高可用
  12. 从0到1的电商架构应该怎么做?
  13. jenkins checkstyle:local variable hides a field
  14. 软件测试基础——概念篇
  15. uniswap合约解读和部署
  16. 【论文速递】-2022-金融研究-系统性金融风险文献综述:现状、发展与展望
  17. 2015(毕业)秋季校园招聘各种企业笔试面试心得
  18. intel linux核显性能,Linux下调节屏幕亮度(Intel核显)
  19. 前端面试 - JS总结(1) - 基础 (数据类型, 事件与函数, 原型链)
  20. 电脑怎么连接两个以上的显示器

热门文章

  1. tf.nn.l2_loss() 与 权重衰减(weight decay)
  2. RDKit | 读取PDB文件并可视化
  3. Pymol(1.8.6)作图技巧之cartoon和surface镶嵌模型
  4. fasterrcnn深度学习口罩检测
  5. 局域网连接其他机器命令_弱电工程师必备技能,PING命令使用方法大全
  6. 一次 HPC 病毒感染与解决经历
  7. karyoploteR: 基因组数据可视化 R 包
  8. 在线绘图|2分钟轻松搞定桑基图(Sankey diagrams)
  9. 漫画 | 你看的每一篇Nature论文,都是这样出炉的!
  10. Cytoscape: MCODE增强包的网络模块化分析