第二章 信号量及条件变量(三)——> 重点
2.4.4 信号量的应用
1. 利用信号量实现进程互斥
为使多个进程能互斥的访问某临界资源,只需为该资源设置一个互斥信号量mutex,并设置其初值为 1 ,然后讲个进程访问该资源的临界区CS置于wait(mutex)和signal(mutex)操作之间即可。
- 利用信号量实现进程互斥,mutex作为互斥锁使用
semaphore mutex=1; //只有一个资源
void P1(void)
{
while(1)
{
P(mutex); //当 mutex < 0 时停止
critical section // 进入临界区
V(mutex);
}
}
void P2(void)
{
while(1)
{
P(mutex);
critical section
V(mutex);
}
}
(1)wait 和 signal必须成对出现
(2)缺少 wait 会导致系统混乱,不能保证对临界区资源的互斥
(3)缺少 signal 将会使临界资源永远不被释放,从而使因等待的资源阻塞进程不被唤醒
2. 利用信号量实现前趋关系(同步关系)——>(自主命题常考前趋图)
为实现先后执行 ——> 这种前趋关系,只需要使进程P1和P2共享一个公用信号量S,其初值为0,将 signal 操作放在语句S1后面,而在S2语句前面插入 wait 操作。由于S被初始化为0,若P2先执行必定阻塞,只有在进程P1执行完S1、signal(S)后使S++,P2进程方能执行S2(在执行S2前先等待,故初值为0做wait操作)
前趋图要点:首先,你要知道该进程被谁阻塞;其次,你要知道要唤醒哪个进程;
2.4.5 管程机制(408出过2次选择,自主命题看学校)
1. 管程的定义(进程的秘书)
用少量信息和对资源所执行的操作来表征该资源,而忽略它们的内部结构和实现细节。
一个管程定义了一个数据结构和能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。
1.1 管程四部分————> 类似C++中的类
- 管程的名称;
- 局部与管程的共享数据结构说明
- 对该数据结构进行操作的一组过程
- 对局部与管程的共享数据设置初值的语句

Monitor monitor_name //管程名
{
share variable declarations;
cond declarations; //条件变量
public:
void P1(){} //PV操作
void P2(){}
{initialization code;//初始化}
}
2.条件变量
利用管程实现进程同步时,必须设置同步工具,如两个同步操作原语 wait 和 signal。
当某进程通过管程请求获得临界资源而未能满足时,管程便调用 wait 原语使该进程等待,并将其排在等待队列上。仅当另一个进程访问完成并释放该资源后,管程才又调用signal原语,唤醒等待队列中的队首进程。
注意事项:
(1)管程对每个条件变量,都须予以说明,其形式为:condition x,y
(2)该变量应置于wait 和 signal 之前,可表示为X.wait 和 X.signal
例如:由于共享数据被占用而使调用进程等待,该条件变量形式为:condition nonbusy
wait 原语 ————> nonbusy.wait 或 cwait(nonbusy)
signal 原语 ————> nonbusy.signal
- X.signal 操作的作用:重启一个被阻塞的进程,如果没有被阻塞进程,则X.signal操作不产生任何后果。这与信号量机制中的signal操作不同,这是由于信号量机制总要执行
s=s+1操作,总会改变信号量的状态。
第二章 信号量及条件变量(三)——> 重点的更多相关文章
- Javascript权威指南——第二章词法结构,第三章类型、值和变量,第四章表达式和运算符,第五章语句
第二章 词法结构 一.HTML并不区分大小写(尽管XHTML区分大小写),而javascript区分大小写:在HTML中,这些标签和属性名可以使用大写也可以使用小写,而在javascript中必须小写 ...
- QThread中的互斥、读写锁、信号量、条件变量
该文出自:http://www.civilnet.cn/bbs/browse.php?topicno=78431 在gemfield的<从pthread到QThread>一文中我们了解了线 ...
- 【Qt开发】QThread中的互斥、读写锁、信号量、条件变量
在gemfield的<从pthread到QThread>一文中我们了解了线程的基本使用,但是有一大部分的内容当时说要放到这片文章里讨论,那就是线程的同步问题.关于这个问题,gemfield ...
- 27 python 初学(信号量、条件变量、同步条件、队列)
参考博客: www.cnblogs.com/yuanchenqi/articles/5733873.html semaphore 信号量: condition 条件变量: event 同步条件:条件 ...
- Python:Day29 信号量、条件变量
信号量:semaphore 信号量是用来控制线程并发数的.(理解:虽然GIL任意时刻都只有一个线程被执行,但是所有线程都有资格去抢,semaphore就是用来控制抢的GIL的数量,只有获取了semap ...
- 第二章 js数据类型和变量
一.驼峰命名法 第一个单词首字母大写,如果有多个单词的话其他的单词首字母大写. eg:nickName 二.prototype现象 新的命名规范. 常用的:以下划线为首字母(变量为对象的私有成员变量) ...
- 《JAVA多线程编程核心技术》 笔记:第二章:对象及变量的并发访问
一.基本概念1.安全的变量和不安全的变量2.脏读的理解3.锁重入:4.锁释放5.死循环:二.synchronized 的理解:三.synchronized 同步方法3.1 同步方法不具有继承性.3.2 ...
- Java多线程编程核心技术,第二章,对象和变量并发访问
1,方法内部变量是线程安全的 2,实例变量非线程安全 3,synchronized是锁对象不是锁方法(锁对象是可以访问非synchronized方法,不可访问同个和其他synchronized方法 4 ...
- 《Java从入门到失业》第二章:Java环境(三):Java命令行工具
2.3Java命令行工具 2.3.1编译运行 到了这里,是不是开始膨胀了,想写一段代码来秀一下?好吧,满足你!国际惯例,我们写一段HelloWorld.我们在某个目录下记事本,编写一段代码如下: 保存 ...
随机推荐
- python中的万能密码
在php中,我们经常见到这样的语句 if(isset($_GET['id'])) { $id=$_GET['id']; //logging the connection parameters to a ...
- 查询满足条件的最新数据(逐步优化,mysql、达梦数据库)
1.条件:报警信息表sensor_warning 2.需求: 查询当前车厢的.不同设备的.所有处理未完成的.不同报警原因的.时间最新的数据集合,最后按设备id或报警时间排序 3.原始sql,不满足实际 ...
- js 面试题正则相关
正则相关[i不区分大小写,g匹配全部数据] var str = "Hello word! I think word is good."; 1.替换str中的word为javascr ...
- 一文打尽PWM协议、PPM协议、PCM协议、SBUS协议、XBUS协议、DSM协议 | STM32的通用定时器TIM3实现PPM信号输出
PWM.PPM.PCM.SBUS.XBUS.DSM都是接收机与其他设备通信的协议. 请注意这里不要将遥控器和接收机之间的协议混淆.遥控器和接收机之间会采用某种协议来互相沟通,这些协议往往各个厂牌各自有 ...
- tengine下载和安装
tengine简介: Tengine所基于开发的Nginx的意思是Engine-X,Tengine在淘宝开发,所以我们把Engine-X中的X替换成Taobao.Tengine即Taobao-Engi ...
- DVWA各等级命令注入漏洞
漏洞描述 在web程序中,因为业务功能需求要通过web前端传递参数到后台服务器上执行,由于开发人员没有对输入进行严格过滤,导致攻击者可以构造一些额外的"带有非法目的的"命令,欺骗后 ...
- torch中squeeze与unsqueeze用法
import torch torch中的squeeze与unsqueeze作用是去除/添加维度为1的行 例如,a=torch.randn(2,3) 那么b=a.unsqueeze(0),b为(1,2, ...
- pandas 学习 第14篇:索引和选择数据
数据框和序列结构中都有轴标签,轴标签的信息存储在Index对象中,轴标签的最重要的作用是: 唯一标识数据,用于定位数据 用于数据对齐 获取和设置数据集的子集. 本文重点关注如何对序列(Series)和 ...
- 移动端 canvas基础1
一.canvas画布 Canvas是HTML5中新出的一个元素,开发者可以通过JS脚本动态绘制图像. #1. 创建canvas画布 在页面中创建canvas标签,并设置其id和宽高 (不要通过css设 ...
- 关于CAS中的ABA问题存在的隐患
一开始觉得ABA问题确实是个问题,但是具体场景是什么呢,虽然过程改了,但是结果一样,取的值也一样 不明所以,不过呢,这里也有一个小的demo可以说明一下 该例子通过AtomicReference判断对 ...