2020-09-29

本文介绍了二进制信号量在进程互斥中的应用,详细阐述了如何通过wait()和signal()操作确保多个进程在临界区的互斥访问。当进程a进入临界区使mutex值变为0,其他如b、c进程将无法进入,必须等待a通过signal()操作释放资源。强调了wait()和signal()操作需配对使用,以及注意点包括临界区代码不宜过长,避免死锁。
摘要由CSDN通过智能技术生成

二进制信号量如何实现互斥

 

首先定义一个二进制信号量mutex,初始值为1。假设现在有三个进程,a,b,c。每个进程在进入临界区前都有一个wait(mutex)的操作来实现互斥。

 

进程a先进入临界区,此时mutex因为a进行了wait(mutex)的操作,mutex=0。若此时的进程b,c也想进入临界区,但是因为b,c若要进入临界区,也需要执行wait(mutex)操作,很显然不能实现,因为此时的mutex=0。只能等到进程a通过signal(mutex)操作退出临界区,释放mutex信号量,使得mutex=1,才能够让其他的进程进入临界区。

 

注意事项

1. wait()和signal()操作要成对出现。

2.wait()和signal()要尽量在进程的首胃且临界区代码不宜太长,避免出现死循环。

3.mutex的初始值一般为1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值