互斥锁与条件锁的区别

互斥锁用于保证公共资源的独占访问,类比于排队上厕所,线程按顺序获取和释放锁。条件锁则更像VIP进站,信号到来时,优先级高的线程优先执行,无“惊群现象”,pthread_cond_signal确保单次唤醒一个等待线程。
摘要由CSDN通过智能技术生成

互斥锁:互斥锁可以理解为排队上厕所,进去一个人(一个线程)->关上门(上锁)->拉粑粑(线程访问公共资源)->结束后出来打开门(释放锁),然后下一个人(队列中的线程)继续同样的操作。

条件锁:可以理解为排队进站,列车来了(signal)->VIP(线程优先级)先上->一次根据排队顺序上(排队先后时间);

当然,这里可能存在一个打开车门,大家一拥而上的问题。但是线程调用pthread_cond_signal不会有“惊群现象”产生,因为pthread_cond_signal最多只给一个线程发信号。如果有多个线程等待,会如同上述例子,先根据优先级执行,再根据等待时间依次执行线程。

注意:pthread_cond_signal调用最多发信一次。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值