互斥量和信号灯

1.互斥量:
线程在取出头节点前必须要等待互斥量,如果此时有其他线程已经获得该互斥量,那么该线程将会阻塞在这里.只有等到其他线程释放掉该互斥量后,该线程才有可能得到该互斥量。互斥量从本质上说就是一把锁, 提供对共享资源的保护访问。
2.信号灯:
信号量(又名:信号灯)与其他进程间通信方式不大相同,主要用途是保护临界资源。
进程可以根据它判定是否能够访问某些共享资源。除了用于访问控制外,还可用于进程同步。
(1)二值信号灯:信号灯的值只能取0或1,类似于互斥锁。 但两者有不同:
信号灯强调共享资源,只要共享资源可用,其他进程同样可以修改信号灯的值;
互斥锁更强调进程,占用资源的进程使用完资源后,必须由进程本身来解锁。
(2)计数信号灯:信号灯的值可以取任意非负值。

3.比较
(1)互斥量是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。
信号灯是一件可以容纳N人的房间,如果人不
满就可以进去,如果人满了,就要等待有人出来。
对于N=1的情况,称为binary semaphore。
(2)互斥量要由获得锁的线程来释放(谁获得,谁释放)。而信号灯可以由其它线程释放。
(3)初始状态可能不一样,互斥量的初始值是1 ,信号灯的初始值可能是1,2,3,4,5。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值