打印

你会用自旋锁吗?

[复制链接]
1585|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tianli1980|  楼主 | 2012-5-17 22:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自旋锁不是谁想用就能用的,必须分场合。如果是同一个处理器内的多个任务需要共享资源,且在其他处理器上没有需要此资源的任务,就不得使用带WFE的自旋锁,因为在执行WFE后,该处理器已经睡眠了,无法再执行其它指令,更不要说调度其他任务让它调用spin_unlock_with_SEV了,此时又没有“外力”,因此就很可能要“长眠”了!进一步地,单机场合下不得不使用自旋锁。因为自旋锁可能导致死循环:优先级最高的任务如果使用自旋锁未果,则在按优先级调度的RTOS中,如果没有反优先级倒转机制,就会使最高优先级的任务永远无线循环,CPU利用率100%,却再也执行不了其它任务。
沙发
jxmzzr| | 2012-5-18 09:29 | 只看该作者
如果是单cpu,假设内核此时正运行在某段临界区内,如果此时发生了中断,在中断返回前内核会进行调度。这时被调度运行的别的进程可能访问这段临界区,是不是会有问题了?请教。谢谢楼主

使用特权

评论回复
板凳
xvbct| | 2012-5-18 22:23 | 只看该作者
自旋锁保持期间,抢占失效的。

使用特权

评论回复
地板
tianli1980|  楼主 | 2012-5-19 16:21 | 只看该作者
2# jxmzzr

只要是单cpu而且内核禁止抢占,除非中断或异常,那么不会被其他内核路径抢占.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

482

主题

2214

帖子

11

粉丝