并发进程同步

P是荷兰语Proberen(测试)的首字母。为阻塞原语,负责把当前进程由运行状态转换为阻塞状态,直到另外一个进程唤醒它。也就是不好的一方面。
V是荷兰语Verhogen(增加)的首字母。为唤醒原语,负责把一个被阻塞的进程唤醒,它有一个参数表,存放着等待被唤醒的进程信息。也就是变好的一方面。

1,桌上有一空盘,允许存放一只水果。爸爸可向盘中放苹果也可向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步。

解:设三个信号量S、So、Sa;信号量S表示盘子是否为空,其初值为1;信号量So表示盘中是否有桔子,其初值为0;信号量Sa表示盘中是否有苹果,其初值为0。同步描述如下:

int S=1;
int Sa=0;
int So=0;
main(){beginfather();son();daughter();end
}
father(){while(1{P(S);//将水果放入盘中if(放入盘中的是桔子){V(So);}else{V(Sa);}}
}
son(){while(1){P(So);//从盘中取出桔子V(S);//吃橘子}
}
daughter(){while(1){P(Sa);//从盘中取出苹果V(S);//吃苹果}
}

2,设公共汽车上,司机和售票员的活动分别是:

在这里插入图片描述

在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?用信号量和P、V操作实现他们的同步。

解:司机和售票员的活动得同步,如下所示

司机售票员
启动车辆关车门
正常行车售票
到站停车开车门

设两个信号量S1,S2;
S1表示是否运行司机启动汽车,其初值为0
S2表示是否运行售票员开门,其初值为0
用P、V原语描述如下:

int S1=0;
int S2=0;
main(){begindriver();busman();end
}
driver(){while(1){P(S1);启动车辆;正常行车;到站停车;V(S2);}
}
busman(){while(1){关车门;V(S1);售票;P(S2);开车门;上下乘客;}
}

未完待续。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

寄存器和pin_16x2 LCD的PIN图和寄存器

寄存器和pinIn these years the LCD is finding widespread use. It has replaced the LEDs or other multi-segment LEDs.This is due to the following reasons: 近年来, LCD正在广泛使用。 它已替换LED或其他多段LED,原因如下: The decli…

【Java IO知识】读取中文乱码问题解决

读取文件主要是要设置读取的输入流如InputStreamReader时要设置读取的解码格式,要和文件本身的编码格式相同,这样读取出来的才不会乱码。 InputStreamReader reader new InputStreamInputReader(input, "编码格式"); ANSI是"gbk" 注:必须是在读取的时候就…

ffplay分析(视频解码线程的操作)

《ffplay的数据结构分析》 《ffplay分析(从启动到读取线程的操作)》 《ffplay分析(音频解码线程的操作)》 《ffplay 分析(音频从Frame(解码后)队列取数据到SDL输出)》 《ffplay分析 (视频从Fram…

【转】.NET深入学习笔记(4):深拷贝与浅拷贝(Deep Copy and Shallow Copy)

今天继续利用准备WSE安全开发文章的空闲时间,完善《.NET深入学习笔记》系列(基本都是.Net重要的知识点,我都做了详细的总结,是什么、为什么、和怎么实现)。想必很多人也接触过这两个概念。做过C的人对深浅拷贝的概念一…

c语言数组-1_C数组-智能问题与解答

c语言数组-1C programming Arrays (One-D Array, Two-D Array) Aptitude Questions and Answers : In this section you will find C Aptitude Questions and Answers on One Dimensional (1D) and Two Dimensional (2D) array. C编程数组(一维数组,二维数组)能力问…

abap 添加alv上的工具栏的按钮_Excel里的置顶功能——快速访问工具栏

100万职场人都在看后台回复礼包领199元职场干货大家好,我是小可~今天跟大家分享一个提高Excel操作效率的小技巧自定义你的快速访问工具栏设置后的效果▼▼▼也就是把你最经常用到的两三个功能放到快速访问工具栏可以一眼就找到这些功能不需要靠快捷键或者功能选项卡…

用递归法求1²+2²+...+n²的值

思路分析: 谈到递归,我个人会联想到数学里面的通式。因为递归调用的函数的对应法则是相同的。例如这道题:f(x)=x。这个就是函数通式,只不过把每个求得的结果进行累加求和即可。用户输入5的时候,会出现f(5)=5,之后再进行x减一操作,执行f(4)=4,最后将每个进行累加即可。…

机器学习资料推荐

机器学习资料推荐 机器学习的资料 1:斯坦福大学视频(作为入门教程,网易有中文字幕,而且讲义也有翻译版本)20集200左右讲义 2:机器学习 Tom M.Mitchell(虽然出版10多年,但是通俗易懂的内容,让读者对机器学习…

ffplay源码(版本:ffmpeg-4.2.1)

ffplay源码(版本:ffmpeg-4.2.1) /** Copyright (c) 2003 Fabrice Bellard** This file is part of FFmpeg.** FFmpeg is free software; you can redistribute it and/or* modify it under the terms of the GNU Lesser General Public* Lic…

stringwriter_Java StringWriter toString()方法与示例

stringwriterStringWriter类的toString()方法 (StringWriter Class toString() method) toString() method is available in java.io package. toString()方法在java.io包中可用。 toString() method is used to represent the buffer current value in terms of string. toStr…

编写一个函数,计算下式当n=10和n=100的值。

思路分析: 首先,我个人看法:当我拿到这道题的时候,我会把它当成一道数学题对待。分子是动的,恒为一,分母是进行依次增加的。且奇数项为正,偶数项为负。因为设计运算出现的是分数,故,设计选取存储类型为double。 找出问题: ①正负号问题、②分母问题、③累计求和问题…

POJ 1001 大数的乘法

对这道题的理解 大数的乘法 关键是 实型的 那么首先就是数出来小数点有几位这个相信很简单 从后面往前数刚开始0 不算接着就是遇到小数点结束如果没有小数点 那么置为0 接着就是输出地时候首先算出小数点的位置然后输出 你想怎么样都行 从后往前数这个时候输出 那么就是你也…

铃木uy125摩托车机油_济南铃木安徽发布国四新车—6480元瑞梦125、9380元UY125

安徽合肥,这个具有两千多年历史的古城,以“三国故地、包拯家乡”而闻名海内外,2019年4月22日济南铃木为这座城市带来一份惊喜,今年正值国四执行,济南铃木旗下两款国四新车瑞梦125与UY125正式在合肥与大家相见。济南铃木…

Andrej Karpathy最新大模型入门视频讲解

最近这两天,特斯拉前AI总监 现在在OpenAI的安德烈卡帕西(Andrej Karpathy)的新教程火了 这次 他专门面向普通大众做了一个关于大语言模型的科普视频 时长1个小时,全部为“非技术介绍”, 涵盖了模型推理、训练、微…

Jquery 寻找父、子、兄弟节点

JQUERY的父,子,兄弟节点查找方法 jQuery.parent(expr) 找父亲节点,可以传入expr进行过滤,比如$("span").parent()或者$("span").parent(".class") jQuery.parents(expr),类似于jQuery.parents(exp…

编写一个程序,计算用户输入的起始时间到终止时间之间相隔的天数。

思路分析: 闰年:闰年又分为普通闰年和世纪闰年 普通闰年:能被4整除且不能被100整除的为闰年(2004为闰年,1999不是闰年) 世纪闰年:能被400整除的是闰年(2020年是闰年,1900年不是闰年) 闰年共有366天&#x…

longvalue_Java Short类longValue()方法及示例

longvalue短类longValue()方法 (Short class longValue() method) longValue() method is available in java.lang package. longValue()方法在java.lang包中可用。 longValue() method is used to return the value denoted by this Short object converted to type long (by …

mvc的Controller返回值类型ActionResult详解

一、简介 ActionResult 操作方法通过执行工作并返回操作结果来响应用户输入。 操作结果表示框架将代表操作方法执行的命令。 ActionResult 类是操作结果的基类。 以下类型从 ActionResult 派生: ContentResult EmptyResult FileResult HttpUnauthorizedResult …

栅格布局一般怎么用_建筑混凝土色差大怎么办?用这种方法处理,一般都看不出来...

由于模板锈蚀、脱模剂污染、原材料等原因,建筑混凝土成形后经常会遇到颜色不一致的现象,为此我们总结了混凝土面色差调整施工工艺,可供大家参考使用。一、混凝土面色差调整施工工艺流程及说明基层表面打磨→吸尘器吸尘→湿润墙面→素水泥处理…

Java SimpleTimeZone equals()方法与示例

SimpleTimeZone类的equals()方法 (SimpleTimeZone Class equals() method) equals() method is available in java.util package. equals()方法在java.util包中可用。 equals() method is used to check whether this SimpleTimeZone and the given object (ob) are equals or …