免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 14964 | 回复: 4
打印 上一主题 下一主题

条件变量为什么要用互斥锁来保护? [复制链接]

论坛徽章:
0
1 [报告]
发表于 2011-12-03 18:26 |显示全部楼层
个人理解走到pthread_cond_wait后,如果条件不满足
该线程就休眠了,等待条件满足后被唤醒。节省了线程不断运行浪费的资源

论坛徽章:
0
2 [报告]
发表于 2011-12-03 18:30 |显示全部楼层
有关系,pthread_cond_wait内需要写入mutex变量参数

论坛徽章:
0
3 [报告]
发表于 2011-12-03 18:39 |显示全部楼层
这个解释起来,就涉及mutex了,你会用互拆锁的话,后面的应该也不难。
pthread_cond_wait他除了判断条件是否满足,还有控制mutex的功能,
如果不满足条件,他要先释放互拆锁,在进入睡眠中

论坛徽章:
0
4 [报告]
发表于 2011-12-03 18:45 |显示全部楼层
本帖最后由 赤夜萌香 于 2011-12-03 18:46 编辑

也不能说让pthread_cond_wait判断条件,这个条件还是编译者自己给的,
如一个while循环,循环里的条件不满足了,就不做pthread_cond_wait
满足就执行pthread_cond_wait,执行pthread_cond_wait就会进入睡眠,但是会在睡眠前先释放他控制的互拆锁

论坛徽章:
0
5 [报告]
发表于 2011-12-03 19:18 |显示全部楼层
本帖最后由 赤夜萌香 于 2011-12-03 19:20 编辑

pthread_cond_wait,pthread_cond_signal
与pthread_mutex_lock,pthread_mutex_unlock;
是两部分,先有后者,后者使用上有不足处,故需要用前者来弥补。前者只是一个辅助弥补;

关键还是理解后者的用法,完全理解了,再去看前者是如何辅助lock与unlock的不足的;

如果还不能完全消化mutex部分就去看 cond会自然狠吃力,建议先完全理解mutex
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP