免费注册 查看新帖 |

Chinaunix

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

求助:linux 用户态 线程同步中信号量、互斥量、锁之间的区别? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-23 14:13 |只看该作者 |倒序浏览
看到内核中线程同步的方法主要有:自旋锁和信号量(当然还有其他一些方法)。他们之间的区别主要是在获取不到资源时,进程的行为不一样:自旋锁-等待、信号量-睡眠。

而用户态提供的线程同步方法主要有:信号量、互斥量、锁。但是书上却只有这三者的用法,却没有给出这三者的区别,以及适用的场合。
求助高手,能否详细说说这三者的区别及适用场合呢?
如果有具体的实例代码最好了!

论坛徽章:
0
2 [报告]
发表于 2009-05-23 18:02 |只看该作者

re;

锁和互斥都依赖于信号量实现

论坛徽章:
0
3 [报告]
发表于 2009-05-25 19:14 |只看该作者

高手们能说的再详细一些吗?

应该不会只是为了语义以及习惯吧

论坛徽章:
0
4 [报告]
发表于 2009-05-25 22:27 |只看该作者
这个用的多,但还真么深究

论坛徽章:
0
5 [报告]
发表于 2009-05-26 09:39 |只看该作者
线程同步中信号量、互斥量、锁?
具体的锁有信号量,互斥量.在LINUX中,互斥量是一种特殊的信号量,只有0,1两种状态,信号量有命名和无名两种,命名可用于进程间同步,无名可用于线程同步.不过线程同步一般用pthread_mutex_t和pthread_cond_t

论坛徽章:
0
6 [报告]
发表于 2009-05-26 11:45 |只看该作者
自旋锁的好处在于多CPU环境下,避免内存访问,充分利用多CPU优势,提高效率。
具体参考Linux Device Drivers, 3rd Edition “5. Concurrency and Race Conditions”
pthread相关函数可以查看glibc的具体实现
原理了解了,区分问题也不大了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP