某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容30桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为5个。每次入、取缸水仅为
和尚取水问题
某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容30桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为5个。每次入、取缸水仅为1桶,且不可以同时进行。试用P、V操作给出小和尚、老和尚动作的算法描述。
题目解析
- n个小和尚从井里面提水进程之间互斥,用 mutex1 来表示;
- n个小和尚将水倒在缸里、n个老和尚从缸里面取水,这些进程互斥,用 mutex2 来表示;
- 不管是谁要使用水桶都要确认空闲水桶的数量,用 amount 来表示;
- 用 full 来表示水缸里面有几桶水,用 empty 来表示水缸里面还能放几桶水;
代码
semaphore mutex1=1,mutex2=1;
semaphore amount=5,empty=30,full=0;void yong monk i(i=1,2,3,,,n) ()
{while(TRUE){P(empty);p(amount);P(mutex1);从井里打水;V(mutex1);P(mutex2);往缸里面倒水;V(mutex2);V(amount);V(full); }
}void old monk i(i=1,2,3,,,n) ()
{while(TRUE){P(full);P(amount);P(mutex2);从缸里面取水使用;V(mutex2);V(amount);V(empty); }
}void mian()
{cobeginyoung monk i(i=1,2,3,,,n) ();old monk i(i=1,2,3,,,n) ();coend
}
某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容30桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为5个。每次入、取缸水仅为相关推荐
- 【操作系统】某寺庙,住着一个老和尚和若干小和尚,有一个水缸,由小和尚提水入缸供老和尚饮用。水缸可以容纳10桶水,水取自同一口井中,由于水井口窄,每次只能容纳一个水桶取水,水桶总数为3个。每次往水缸中倒
题目 某寺庙,住着一个老和尚和若干小和尚,有一个水缸,由小和尚提水入缸供老和尚饮用.水缸可以容纳10桶水,水取自同一口井中,由于水井口窄,每次只能容纳一个水桶取水,水桶总数为3个.每次往水缸中倒水与从 ...
- 给定一个由n个圆盘组成的塔,这些圆盘按照大小递减的方式套在第一根桩柱上。现要将整个塔移动到另一根桩柱上,每次只能移动一个圆盘,且较大的圆盘在移动过程中不能放置在较小的圆盘上面
对汉诺塔问题详解,给定一个由n个圆盘组成的塔,这些圆盘按照大小递减的方式套在第一根桩柱上.现要将整个塔移动到另一根桩柱上,每次只能移动一个圆盘,且较大的圆盘在移动过程中不能放置在较小的圆盘上面: 输入 ...
- 打印机顺序打印问题(一台打印机有若干个任务,但是打印机每次只能打印一个任务,每个任务是有优先级的,从1到9)
一台打印机有若干个任务,但是打印机每次只能打印一个任务,每个任务是有优先级的,从1到9.打印的时候从序列的第一个开始,如果第一个的 优先级不是最大的,则将其出队,并加入队尾.若其优先级是最大的,则直接 ...
- 数据库中查询记录时是否每次只能使用一个索引?
在网上看一些文章的时候,发现好几次下面这样的话: 如果经常需要同时对两个字段进行AND查询,那么使用两个单独索引不如建立一个复合索引,因为两个单独索引通常数据库只能使用其中一个,而使用复合索引因为索引 ...
- 返回多个不同类型参数的值(out)可变参数一维数组( params )把值从方法中带出(ref) 方法递归(方法自己调用自己与循坏类似注意return每次只能跳出一个方法))...
//out参数 如果需要在方法中,返回多个值,并且是不同类型,可以使用out参数帮助我们返回. out参数就是帮助我们在方法中返回多个不同类型的值. out参数必须在方法的内部为其赋值,而在方法 ...
- 记录一种多个按钮中每次只能选中一个的实现方式
阐述 本文旨在说明实现的思路. 当窗口创建很多QPushButton或者QPushButton的子类的时候,若要实现在众多的按钮中,每次被点击的按钮被选中,下一次点击另一个按钮的时候,上一个被选中的按 ...
- 操作系统PV操作伪代码(小和尚提水、老和尚饮水问题)
题目: 某寺庙,有小和尚.老和尚若干.庙内有一水缸,由小和尚提水入缸,供老和尚饮用.水缸可容纳10桶水,每次入水.取水仅为1桶,不可同时进行.水取自同一井中,水井径窄,每次只能容纳一个水桶取水.设水 ...
- 什么是SpringMVC?SpringMVC之hello.jsp实现过程 问题:SpringMVC在JSP页面取不到ModelAndView中的值(已解决)
兄弟,保持心情愉悦 初入本科,我就听到一个名词SSM,刚开始我还以为...wc计算机领域也好这口,当然在这里再次声明一下本人是个正经人,如果你翻看过的我的其他文章你会发现,我在最近发布的关与Sprin ...
- 教你如何使用Java代码从网页中爬取数据到数据库中——网络爬虫精华篇
文章目录 1:网络爬虫介绍 2:HttpClients类介绍 2.1 HttpGet参数问题 2.2 HttpPost参数问题 2.3 连接池技术问题 3:Jsoup介绍 4:动手实践如何抓取网页上数 ...
最新文章
- Spring Cloud Contract 契约测试实践
- php 其他格式数据与数组互转
- 645. Set Mismatch(python)
- TCP/IP之大明内阁---协议的制定
- 浅谈ATP检查中的“确认可用部分数量”(二)
- 全局变量和局部变量命名规则_变量范围和LEGB规则
- InnerText和InnerXml的区别
- 威联通架设php网站_如何架设PHP服务器
- 化工企业数据分析平台项目之应收款分析
- Flutter之Binding简单梳理
- 如何从右键弹出菜单中清空删除数据加清空前提问确定
- C# string byte[] Base64 常用互相转换
- 小说阅读器未能连接服务器怎么办,小强小说阅读器无法加载小说章节的解决方法...
- Verilog 级联IIR滤波器设计
- word一打字就有下划线_word打字自带下划线 为什么WORD打字时总带有下划线,如何解决?...
- Windows使用 cwRsync进行文件夹同步
- JZOJ5444. 【NOIP2017提高A组冲刺11.2】救赎
- VP9编码(3)-- 符号
- apple授权登录(服务端)
- acm-(辗转相除法、丢番图方程)2020 China Collegiate Programming Contest Qinhuangdao Site I. Interstellar Hunter