线程->锁->Condition肤浅析

本文详细介绍了Condition对象的功能及其相对于wait/notify的优势。Condition由Lock对象创建,支持更细粒度的线程唤醒控制,能有效避免错误唤醒导致的时间浪费。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Condition对象是由Lock对象创建出来的,其功能同wait/notify(换成了await/signal)差不多,但他的优势所在之处,就是他可以指定唤醒的对象,也就是说作用力度更细。此外,当线程释放锁进入等待状态时,不会响应中断!
最后粘贴参考中的一段话:

这就是多个Condition的强大之处,假设缓存队列中已经存满,那么阻塞的肯定是写线程,唤醒的肯定是读线程,相反,阻塞的肯定是读线程,唤醒的肯定是写线程,那么假设只有一个Condition会有什么效果呢,缓存队列中已经存满,这个Lock不知道唤醒的是读线程还是写线程了,如果唤醒的是读线程,皆大欢喜,如果唤醒的是写线程,那么线程刚被唤醒,又被阻塞了,这时又去唤醒,这样就浪费了很多时间。

参考:Condition-线程通信更高效的方式 这里写代码片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值