Java同步技术(五)

 

2.4. 信号量、事件以及条件变量之间异同

前面我们看到了事件的定义及应用,那么它与信号量有什么异同点呢?在此,我们试着总结一下:

  1. 信号量通过P操作,事件和条件变量通过wait()操作,可以使当前线程处于阻塞状态。
  2. 信号量通过V操作,事件和条件变量通过signal()操作, 可以唤醒一个处于阻塞状态的线程
  3. 通过queue操作,它们都可以获得处于等待队列中的线程数量
  4. 事件与条件变量在执行signal操作时,如果没有等待线程会丢弃该信号,那么这个信号对系统就不会产生影响。而信号量在执行V操作时,不论是否有等待线程都会保存该信号(信号值增加)。
  5. 条件变量是临界区(管程)相关的。即它必须使用在临界区(管程方法)内,而且会在执行wait操作时释放对临界区(管程)的控制权。而信号量和事件都是临界区(管程)无关的, 即可以在非临界区(管程方法)内使用。即使在临界区内使用了P操作和wait()操作,也不会释放所在临界区(管程)的控制权。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值