免费注册 查看新帖 |

Chinaunix

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

[内核同步] 求教育,内核使用自旋锁问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-07 23:59 |只看该作者 |倒序浏览
求教高手清晰的解释!
如果分别定义并初始化两个自旋锁A,B,他们都保护同一个临界区。那么分别执行A的执行线程t1,和执行B的执行线程t2会相互影响吗?
即互斥关系是依据自选锁变量(要访问同一个自旋锁变量,就会产生互斥?),还是依据临界区(不同自旋锁变量,只要访问同一个临界区,就能产生互斥?)

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
2 [报告]
发表于 2012-05-08 07:39 |只看该作者
回复 1# jzwxh77
互斥关系是依据自选锁变量(要访问同一个自旋锁变量,就会产生互斥?),还是依据临界区(不同自旋锁变量,只要访问同一个临界区,就能产生互斥?)

依据自旋锁变量

论坛徽章:
0
3 [报告]
发表于 2012-05-08 10:27 |只看该作者
谢谢2楼的解答,那么就是说在内核中自旋锁需要定义为全局性?如果是函数局部变量,好像就不能产生互斥了,是吧?
弱弱的再问个问题。读写锁,要产生互斥,定义的读锁和写锁时,必须使用同一个变量名称,才能产生互斥吗?如果是定义不同名称,之间就不会产生互斥?

论坛徽章:
0
4 [报告]
发表于 2012-05-08 11:13 |只看该作者
jzwxh77 发表于 2012-05-08 10:27
谢谢2楼的解答,那么就是说在内核中自旋锁需要定义为全局性?如果是函数局部变量,好像就不能产生互斥了, ...


定义两个不同锁变量,两把锁,还互斥个毛啊?互斥的变量必定是在两个执行路径中共享的,否则产生不了锁的用途。

论坛徽章:
0
5 [报告]
发表于 2012-05-10 13:42 |只看该作者
所谓的临界区就好比是个公共的单人厕所,所谓的同步机制就好比厕所上的有人没人的提示标记。通常的规则是上厕所之前先看看门上有没有别人正在使用的标记,如果别人正在使用,你最好就别进去添乱了,至于你是在这死等(spin lock)还是到别处溜达溜达(semophone)那是你自己的事。当然,你如果强行进入也不是不行,只不过可能会造成冲突,后果不堪设想。lol

论坛徽章:
0
6 [报告]
发表于 2012-05-10 17:21 |只看该作者
上楼话糙理不糙。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP