某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容30桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为5个。每次入、取缸水仅为

2023-10-31

和尚取水问题

某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容30桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为5个。每次入、取缸水仅为1桶,且不可以同时进行。试用P、V操作给出小和尚、老和尚动作的算法描述。

题目解析

  1. n个小和尚从井里面提水进程之间互斥,用 mutex1 来表示;
  2. n个小和尚将水倒在缸里、n个老和尚从缸里面取水,这些进程互斥,用 mutex2 来表示;
  3. 不管是谁要使用水桶都要确认空闲水桶的数量,用 amount 来表示;
  4. 用 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()
{
	cobegin
	young monk i(i=1,2,3,,,n) ();
	old monk i(i=1,2,3,,,n) ();
	coend
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容30桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为5个。每次入、取缸水仅为 的相关文章

  • 终端连接控制(stty的编写)

    终端连接控制 stty的编写 一 背景 文件与目录在之前已经学习过了 文件中包含着数据 这些数据可以被读出 写入 也可以用以操作 但文件不仅仅是计算机唯一的数据来源 计算机的数据还可以来自于许多的外部设备 比如扫描仪 照相机 鼠标等输入设备
  • plsql更改用户登录密码

    ORACLE数据库系统是美国ORACLE公司 甲骨文 提供的以分布式数据库为核心的一组软件产品 是目前最流行的客户 服务器 CLIENT SERVER 或B S体系结构的数据库之一 比如SilverStream就是基于数据库的一种中间件 O
  • java调优总结

    JVM调优总结 序 几年前写过一篇关于JVM调优的文章 前段时间拿出来看了看 又添加了一些东西 突然发现 基础真的很重要 学习的过程是一个由表及里 再由里及表的过程 呵呵 所谓的 温故而知新 而真正能走完这个轮回的人 也就能称为大牛或专家了
  • Win11微软账号登录不上?Win11登录Microsoft账户出错的解决方法

    Win11微软账号登录不上 近期有部分Win11用户反映在登录微软账号会出现一直转圈 无法登录的情况 这样导致部分功能都不能正常使用了 为此十分令人头疼 那么对于这一情况 有没有什么方法可以有效的解决呢 下面小编教给大家操作方法 大家可以去
  • windows下命令行修改系统时间;修改系统时间的软件

    找了很久 都没有找到 还找了关键词 dos下修改系统时间 因为看到linux下修改系统时间是用hwclock 命令写入主板芯片 而我由于某些原因想自动化修改系统时间 所以找windows下修改系统时间的软件 没有找到 有一个 意天禁止修改系
  • linux 如何创建卷组

    1 创建一个物理卷 Pvcreate dev sd1 dev sd2 dev sd3 dev sd4 2 用刚才创建的物理卷创建一个卷组 Vgcreate 卷组名 dev sd1 dev sd2 dev sd3 dev sd4 3 创建逻辑
  • CentOS 7 关闭网络限制

    1 安装CentOS 7 3操作系统mini版本即可 2 设置关闭Selinux 编辑 etc selinux config vi etc selinux config SELINUX disabled 重启机器 查看selinux状态 s
  • Ubuntu 10.10下安装TFTP的步骤 tftp-hpa版本

    背景 由于想要在tq2440板子上用tftp下载kernel 所以要在自己的PC机的Ubuntu 10 10上安装tftp服务 所以就去网上找了些教程 但是很悲剧 按照那些教程去操作 结果还都是无法正常运行tftp服务 最后还是从一个外国人
  • 设备管理过程

    复杂度2 5 机密度2 5 最后更新2021 04 19 AIX中对设备会有如下五个操作 define aix下能看到设备的定义 但驱动程序并没有加载或初始化 该设备不可用 lsdev看到设备时defined 很多逻辑设备 vg lv等 只
  • 操作系统PV操作及读者写者问题

    操作系统PV操作及读者写者问题 目录 1 信号量 2 P V操作原语可描述为以下式子 3 解释 4 互斥模式原理 5 同步模式原理 6 读者写者问题 1 信号量 PV操作与信号量的处理有关 信号量是表示资源的实体 是一个与队列有关的整型变量
  • win10 Enable developer Mode

    经过漫长的安装过程 win10终于装上了vs2015 rc 写个小程序试试 结果提示 根据提示打开 设置 更新 for developer 据说应该有这么个界面 但是这个界面根本出不来 直接闪退的说 翻 MSDN 终于翻出了解决方法 htt
  • CF、SF、OF、ZF标志位

    没学汇编 这种题我真是做一道错一道 OF overflow flag 溢出标志位 溢出标志位 OF 1 表示带符号整数运算时结果发生溢出 对于无符号整数运算 OF没有意义 对于有符号数的溢出判断方式有 1 采用一位符号位 思想为 或 则为溢
  • Linux系统编程:多线程交替打印ABC

    引言 分享关于线程的一道测试题 因为网上基本都是Java的解决方法 决定自己写一篇来记录一下线程的学习 问题描述 编写一个至少具有三个线程的程序 称之为线程 A B 和 C 其中线程 A 输出字符 A 线程 B 输出字符 B 线程 C 输出
  • 操作系统 段页式存储管理

    一 引入 分页系统是以页面作为内存分配的基本单位 能有效地提高内存利用率 但信息共享等不方便 分段系统是以段作为内存分配的基本单位 它能够更好地满足用户多方面的需要 信息共享 动态链接等 但采用分区方式管理物理内存 仍然存在碎片问题 段页式
  • Windows驱动开发(一)第一个驱动程序

    首先我们需要了解 在操作系统中 是分两种权限的 一种是内核态 我们也称为0环 一种是用户态 称之为3环 而在我们的电脑中 驱动程序是运行在内核态的 这意味着和操作系统内核是在同一权限的 而普通的应用程序的权限是最低的 高权限谁不想拥有呢 因
  • linux 使用systemctl 启动服务报错: Error: No space left on device

    By default Linux only allocates 8192 watches for inotify which is ridiculously low And when it runs out the error is als
  • java IO、NIO、AIO详解

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 IO流 同步 阻塞 二 NIO 同步 非阻塞 三 NIO2 异步 非阻塞 正文 回到顶部 概述 在我们学习Java的IO流之前 我们都要了解几个关键词 同步与异步 sy
  • 如何快速构建CMBD系统-glpi

    脚本后续更新及迭代将由kkitDeploy项目代替 https github com luckman666 kkitdeploy server 请大家持续关注kkitDeploy 一 CMBD系统构建步骤 起初 开发这套CMBD系统是为了帮
  • Common块和Bss段的区别

    昨天看 程序员的自我修养 链接 装载与库 发现不是很理解为什么要用common块 然后仔细看了一番 有了自己的理解 common块 用来存放弱符号 而全局未初始化变量是弱符号 但是难道不是应该存放在 bss段吗 为什么要有common块呢
  • Linux(13):例行性工作排程

    例行性工程 听谓的排程是将工作安排执行的流程之意 Linux 排程就是透过 crontab 与 at 这两个东西 两种工作排程的方式 一种是例行性的 就是每隔一定的周期要来办的事项 一种是突发性的 就是这次做完以后就没有的那一种 at at

随机推荐

  • Vue2:官方路由 Vue-Router 3.x

    前端路由 前端路由 根据不同的url地址 页面上展示不同的内容 根据url地址的不同分发到不同的组件 SPA 介绍 spa 是 single page application 简写 意思是单页面应用程序 Vue 适合开发 spa 类型的项目
  • Tom DeMarco:软件工程这个概念已过时?

    原文作者 Tom Demarco 写于2009年7月 作者简介 Tom DeMarco是大西洋系统协会 www atlsysguild com 的负责人 他的职业生涯开始于贝尔实验室 是结构化分析和设计的创始人之一 研究领域主要集中在对软件
  • 浏览器控制台报错:Cross origin requests are only supported for protocol schemes

    浏览器控制台报错 Cross origin requests are only supported for protocol schemes 一 问题 二 原因分析 三 解决方法 一 问题 今天写了一个H5 的小demo 然后在浏览器中运行
  • 管理系列:项目管理之项目汇报总结

    项目汇报是项目实施过程中到达某一节点时 项目经理将项目的开发成果给用户展示介绍 防止项目开发方向与客户期望方向不符 以及推动项目上线运行的关键环节 所以项目汇报的效果对项目的进展方向 推进速度有很重要的影响 所以 在项目汇报之前一定要准备充
  • 编译原理 课程设计 LR(1)分析法

    作业目的 构造LR 1 分析程序 利用它进行语法分析 判断给出的符号串是否为该文法识别的句子 了解LR K 分析方法是严格的从左向右扫描 和自底向上的语法分析方法 作业题目 1 对下列文法 用LR 1 分析法对任意输入的符号串进行分析 0
  • SpringCloud Ribbon

    负载均衡分为服务端负载均衡和客户端负载均衡 SpringCloud Ribbon是基于客户端的负载均衡工具 客户端负载均衡和服务端负载均衡的区别在于客户端要维护一份服务列表 Ribbon从Eureka server中获取服务列表 根据负载均
  • 到底什么是CLI?

    前端写了这么久 经常用Vue cli webpack cli react cli这些工具 但不怕大家笑话 这些名词我一直不知道啥意思 我也查了资料 网上都说它们叫脚手架或者命令行工具 但对我来说我只是又多知道了几个名称 直到最近接触linu
  • Error (3, 32) java 程序包org springframework boot不存在

    Error 3 32 java 程序包org springframework boot不存在 1 出现的问题 java 程序包org springframework boot不存在 idea安装2020 1 1后踩的坑 2 解决办法 两种
  • 单片机与PLD(可编程逻辑器件)的联系与区别

    站外链接 http m dzsc com data 2017 6 19 112438 html
  • 前端excel写入信息并下载

    需要npm install xlsx 安装xlsx依赖 const data management zh cn 管理 en us function dataToFormat data let newdata for let i in dat
  • JS对象(一)

    http evanwukong blog 163 com blog static 134836495201232554038203 JavaScript 是面向对象的 但是不少人对这一点理解得并不全面 在 JavaScript 中 对象分为
  • linux下GPRS ppp拨号默认路由问题(存在eth0)

    问题描述 linux版本是Linux 2 6 33 rc4 第一种情况 eth0 192 168 1 2 eth0 gw 192 168 1 1 ppp0 10 0 0 1 eth0的IP地址和gw在同一个网段下 此时的默认路由是 Dest
  • 幂等性概念与解决方案

    幂等性概念 幂等性原本是数学上的概念用在编程领域 则意为对同一个系统 使用同样的条件 一次请求和重复的多次请求对系统资源的影响是一致的 幂等性原本是数学上的概念 即使公式 f x f f x 能够成立的数学性质 编程领域 则意为对同一个系统
  • 条件变量详细解说

    1 条件变量概述 条件变量是用来等待线程而不是上锁的 条件变量通常和互斥锁一起使用 条件变量之所以要和互斥锁一起使用 主要是因为互斥锁的一个明显的特点就是它只有两种状态 锁定和非锁定 而条件变量可以通过允许线程阻塞和等待另一个线程发送信号来
  • lnmp1.4上thinkphp5.0出现404的解决办法

    气死了 tp5在Nginx上不适用pathinfo格式的url 在项目的Nginx配置文件里找到include enable php conf 改为 include enable php pathinfo cof 然后就可以了
  • 电子小模块

    1 步进电机 ULN2003驱动板4相5线 一一一一一一一一一一一一一一一一一一一一一一一一一一一一一 2 红外传感器模块 https pan baidu com s 1QR Z4Qq02ViaVl8wyyoWeg 提取码 knbw 一一一
  • 【点云】SemanticKITTI: A Dataset for Semantic Scene Understanding of LiDAR Sequences

    目录 摘要 介绍 SemanticKITTI Dataset 标注过程 摘要 自动驾驶需要对附近的目标和表面有细颗粒度 fine grained 的理解 光检测和范围 LiDAR 提供了关于环境准确的几何信息 目前 缺少一个基于移动LiDA
  • 程序猿做副业,偷偷告诉你个方法!请勿外传。

    身为程序猿 年轻的时候总觉得 只要我好好写代码 安心于技术 努力提高技能 即便不走管理者路线 在岗位上认真负责做出成绩 就能升职加薪 走上人生巅峰 到了三十多岁才发现 曾经太天真了 技术见长 头发变少 工资已经摸到天花板 但固定的开销必不可
  • HDU - 1808 Halloween treats(鸽巢原理)

    Halloween treats Every year there is the same problem at Halloween Each neighbour is only willing to give a certain tota
  • 某寺庙,有小和尚、老和尚若干。有一水缸,由小和尚用水桶从井中提水入缸,老和尚用水桶从缸里取水饮用。水缸可容30桶水,水取自同一井中。水井径窄,每次只能容一个水桶取水。水桶总数为5个。每次入、取缸水仅为

    和尚取水问题 某寺庙 有小和尚 老和尚若干 有一水缸 由小和尚用水桶从井中提水入缸 老和尚用水桶从缸里取水饮用 水缸可容30桶水 水取自同一井中 水井径窄 每次只能容一个水桶取水 水桶总数为5个 每次入 取缸水仅为1桶 且不可以同时进行 试