操作系统(二十四)多生产者多消费者问题
2.3.7 多生产者多消费者问题
semaphore mutex = 1; //实现互斥访问盘子(缓冲区)
semaphore apple = 0; //盘子中有几个苹果
semaphore orange = 0; //盘子中有几个橘子
semaphore plate = 1; //盘子中还可以放多少个水果dad (){while(1){准备一个苹果;P(plate);P(mutex);把苹果放入盘子;V(mutex);V(apple);}
}mom (){while(1){准备一个橘子;P(plate);P(mutex);把橘子放入盘子;V(mutex);V(orange);}
}daughter (){while(1){P(apple);P(mutex);从盘中取出苹果;V(mutex);V(plate);吃掉苹果;}
}son (){while(1){P(orange);P(mutex);从盘中取出橘子;V(mutex);V(plate);吃掉橘子;}
}
可能有的同学会问为什么设置了一个mutex=1还要再有一个plate=1呢?mutex完成的任务是保证互斥,其值并无实际意义;plate代表的是缓冲区的大小,可以随着题目条件而改变。顺便一提,其实在本题中mutex可以不要,因为在任何时候apple、orange、plate 三个同步信号量中最多只有一个是1。因此在任何时刻,最多只有一个进程的P操作不会被阻塞,并顺利地进入临界区。但是再平常的时候我们还是写上互斥信号量比较好。
操作系统(二十四)多生产者多消费者问题相关推荐
- 异常处理程序和软件异常——Windows核心编程学习手札之二十四
异常处理程序和软件异常 --Windows核心编程学习手札之二十四 CPU负责捕捉无效内存访问和用0除一个数值这种错误,并相应引发一个异常作为对错误的反应,CPU引发的异常称为硬件异常(hardwar ...
- [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- 真三国无双8二十四项修改器风灵月影版
点击下载来源:真三国无双8二十四项修改器风灵月影版 真三国无双8修改器风灵月影顾名思义,就是由风灵月影大神专门为<真三国无双8(Dynasty Warriors 8)>量身打造的一款游戏辅 ...
- 计算机网络(二十四)UDP及TCP首部的格式
计算机网络(二十四)UDP及TCP首部的格式 UDP首部的格式 a.源端口号(Source Port) b.目标端口号(Destination Port) c.包长度(Length) d.校验和(Ch ...
- J2EE进阶(二十四)JBoss Web和 Tomcat的区别
J2EE进阶(二十四)JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求.近年来,作为开源中间件的全球 ...
- 二十四、Struts2中的UI标签
二十四.Struts2中的UI标签 Struts2中UI标签的优势: 数据回显 页面布局和排版(Freemark),struts2提供了一些常用的排版(主题:xhtml默认 simple ajax) ...
- python 分数序列求和公式_Python分数序列求和,编程练习题实例二十四
本文是关于Python分数序列求和的应用练习,适合菜鸟练习使用,python大牛绕行哦. Python练习题问题如下: 问题简述:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13 要 ...
- 数字图像处理领域的二十四个典型算法及vc实现、第一章
数字图像处理领域的二十四个典型算法及vc实现.第一章 作者:July 二零一一年二月二十六日. 参考:百度百科.维基百科.vc数字图像处理. --------------------------- ...
- 山海演武传·黄道·第一卷 雏龙惊蛰 第二十二 ~ 二十四章 真龙之剑·星墟列将...
山海演武传·黄道·第一卷 雏龙惊蛰 第二十二 ~ 二十四章 真龙之剑·星墟列将 "我是第一次--请你,请你温柔一点--"少女一边娇喘着,一边将稚嫩的红唇紧贴在男子耳边,樱桃小嘴盈溢 ...
- CYQ.Data 轻量数据层之路 使用篇-MAction 取值赋值 视频[带音乐] F (二十四)
CYQ.Data 轻量数据层之路 使用篇-MAction 取值赋值 视频[带音乐] F (二十四) 说明: 本次录制主要为使用篇:CYQ.Data 轻量数据层之路 使用篇三曲 MAction 取值赋值 ...
最新文章
- 转---SQL与EXCEL交互(导出/导入)
- VisualStudio2010 SP1 SP1 SDK SQLServer 2008 SP3 下载地址
- hbase-client1.2.0新版api获取数据方式
- 那些用起来很爽,但用不好可能会被人打的Python骚操作
- js new Date()
- NOIP2016-D2-T2 蚯蚓(单调队列)
- c11 语言,语言学C11-1.ppt
- DNS 服务器 4013警告信息的解决
- 孔夫子旧书网接口:实现输入ISBN获取图书信息
- 白苹果了怎么办_iOS更新白苹果处理及第三方售后吐槽
- BLE(12)—— 细说 Connection
- 第一章 VSTO简介
- 模式识别——第3章 判别函数法
- ERP电商管理系统开发实现功能
- Keep不甘做“工具人”
- 集团公司预算控制与网上费用报销系统
- 【JavaScript】获取指定字符串
- 编程萌新必看!初学C语言必会的知识点,你学废了吗?
- 如何解决学习进度缓慢?
- Toy3D引擎:网页游戏3D化的利器