newkey
驱动小牛
驱动小牛
  • 注册日期2002-10-03
  • 最后登录2013-10-13
  • 粉丝1
  • 关注0
  • 积分45分
  • 威望392点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
阅读:1740回复:5

help:问一个自旋锁基本问题

楼主#
更多 发布于:2008-08-29 15:22
对同一个临界区, 分别在2个线程中加自旋锁访问

如果在1个线程中已经加锁, 在第一个线程还没有解锁前,第2个也尝试加锁,是否会导致死锁

如果不会导致死锁,是否是第二线程一直等到第一个线程放锁后才执行

感谢
www.xDrv.com
x-star
驱动小牛
驱动小牛
  • 注册日期2007-04-26
  • 最后登录2018-11-17
  • 粉丝0
  • 关注0
  • 积分65分
  • 威望664点
  • 贡献值1点
  • 好评度39点
  • 原创分1分
  • 专家分1分
  • 社区居民
沙发#
发布于:2008-08-29 18:07
你的理解是正确的
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
板凳#
发布于:2008-08-29 19:06
1 主要针对的smp设计的自旋锁。他不会引起进程睡眠,没有进程列表,关掉中断。

2 对up内核,如果是抢占模式的,那么可以认为up是smp的。主要是在临界区禁止抢占。

3 对up内核,如果是非抢占模式的,那么spinlock是无用的。因为否则会引起系统挂起。
走走看看开源好 Solaris vs Linux
yuanyuan
驱动大牛
驱动大牛
  • 注册日期2003-01-15
  • 最后登录2010-08-04
  • 粉丝0
  • 关注0
  • 积分1025分
  • 威望300点
  • 贡献值0点
  • 好评度232点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-09-03 14:06
线程不需要用自旋锁,太奢侈了
newkey
驱动小牛
驱动小牛
  • 注册日期2002-10-03
  • 最后登录2013-10-13
  • 粉丝1
  • 关注0
  • 积分45分
  • 威望392点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-09-04 10:09
主要是多CPU



线程不需要用自旋锁,太奢侈了?
--------------------------------------------
在多CPU环境下,是不是只要有可能多个地方访问同一变量,都应该使用自旋锁?
www.xDrv.com
ghost2002910
驱动牛犊
驱动牛犊
  • 注册日期2004-10-09
  • 最后登录2013-05-21
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望45点
  • 贡献值1点
  • 好评度6点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-09-04 16:35
如果只有1个spin lock,你用怎么能同时有2个线程acquire? 死锁一般是多个锁按不恰当的顺序获取造成的。
游客

返回顶部