用信号量实现进程互斥、同步、前驱关系

本文详细介绍了如何使用信号量机制实现进程的互斥与同步。通过设置互斥信号量实现对临界资源的保护,确保并发访问的正确性;利用同步信号量解决进程间的有序推进,保证特定代码段的执行顺序。通过对多个前驱关系的分析,设置相应的同步变量,确保代码执行的前驱关系得到满足。
摘要由CSDN通过智能技术生成

信号量机制实现进程互斥

1.分析并发进程的关键活动,划分临界区(如:对临界资源打印机的访问就应放在临界区)

2.设置互斥信号量mutex,初值为1

3.在临界区之前执行P(mutex)

4.在临界区之后执行V(mutex)

注意:

对不同的临界资源需要设置不同的互斥信号量

 P、V操作必须成对出现。缺失P(mutex)就不能保证临界资源的互斥访问。缺失V(mutex)会导致资源永不被释放,等待进程永不被唤醒。

// 信号量机制实现互斥
semphore mutex = 1;    //初始化信号量

P1(){
    ...
    P(mutex);          //使用临界资源前需要加锁
    临界区代码段
    V(mutex);          //使用临界资源后需要解锁        
    ...
}

P2(){
    ...
    P(mutex);
    临界区代码段
    V(mutex);
    ...
}

信号量机制实现进程同步

进程同步:要让各并发进程按要求有序地推进。

P1(){
    代码1;
    代码2;
    代码3;
}

P2(){
    代码1;
    代码2;
    代码3;
}

比如,P1、P2并发执行,由于存在异步性,因此二者交替推进的次序是不确定的。

若P2的"代码4"要基于P1的"代码1"和"代码2"的运行结果才能执行,那么我们就必须保证"代码4"一定是在"代码2"之后才会执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值