4月11日作业修订

 A.这主要看你互斥锁锁的资源是那部分的,如果是进程内资源,则可以实现同一进程不同线程之间的互斥,而如果将共享内存作为互斥锁进行操作则可以实现不同进程之间的互斥。

B.这是必然的,加锁是为了防止数据的二义性

C.信号量同时使用的是共享资源的不同部分,因而不会导致数据的二义性

D.速度快,但是只能用于同一线程的进程之间

BC:条件变量和信号量都可以实现进程间的通知和唤醒,这是线程间同步实现的基础

AD:互斥锁和读写锁都是为了实现对共享安全访问操作的锁的技术,并不含有通知和唤醒的功能

 

条件变量提供了一个pcb队列以及阻塞和唤醒的接口实现同步,但是什么时候唤醒以及什么时候阻塞线程是由程序员控制的,而这个控制是需要一个共享资源来决定的,所以需要搭配上一个互斥锁来进行使用来保护这个共享资源的条件判断和操作

信号量提供一个pcb等待队列以及一个实现了原子操作的计数器,通过计数器来实现同步的条件判断,所以不需要这个互斥锁,原子操作本生就能避免这个数据二义性问题。

 条件变量进行同步的判断条件是这个共享资源本省,所以需要搭配互斥锁进行使用

条件变量被唤醒时,需要重新进行条件判断,因为有的线程卡在锁的地方,一个线程结束后,直接进入还是会导致数据的二意

需要两个条件变量,因为如果出现误唤醒的情况,两个对象,两个条件变量,分开唤醒

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值