|
发表于 2008-6-28 11:32:14
|
显示全部楼层
自旋锁的实现是通过自旋来获取锁的,如果要获得的锁没有被释放,就是一直循环(自旋)去等待锁的释放。
自旋锁只在多处理器系统上有效,如果自旋锁在某个CPU锁住后(锁住后会关闭中断)了,没有及时释放,那么其他CPU在获取这个锁的时候就什么也不能做了,如果经常出现这种情况,性能下降就很严重了。
所以在自旋锁内的临界区域: 执行时间必须尽可能的短,以减少对性能的影响。
如果在持有自旋锁的时候睡觉,让本地CPU其他进程调度,其他进程只要尝试获取这个自旋锁,就会出现死锁。
初学,望指正。 |
|