互斥锁与条件变量的通俗语义

本文详细介绍了互斥锁和条件变量的概念及其在多线程编程中的应用。互斥锁用于保护共享资源免受并发访问导致的问题,而条件变量则帮助线程在等待特定条件发生时避免忙等待,从而提高系统效率。

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


互斥锁,我要对一块共享数据操作,但是我怕同时你也操作,那就乱套了,所以我要加锁,这个时候我就开始操作这块共享数据,而你进不了临界区,等我操作完了,把锁丢掉,你就可以拿到锁进去操作了


条件变量,我要看一块共享数据里某一个条件是否达成,我很关心这个,如果我用互斥锁,不停的进入临界区看条件是否达成,这简直太悲剧了,这样一来,我醒的时候会占CPU资源,但是却干不了什么时,只是频繁的看条件是否达成,而且这对别人来说也是一种损失,我每次加上锁,别人就进不了临界区干不了事了。好吧,轮询总是痛苦的,咱等别人通知吧,于是条件变量出现了,我依旧要拿这个锁,进了临界区,看到了共享数据,发现,咦,条件还不到,于是我就调用pthread_cond_wait(),先把这个锁丢了,好让别人可以去对共享数据做操作,然后呢?然后我就睡了,直到特定的条件发生,别人修改完了共享数据,给我发了个消息,我又重新拿到了锁,继续干俺要干的事情了……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值