自旋锁的忙等待问题

问题1:

自旋锁最多只能被一个可执行线程持有。如果一个执行线程试图获得一个被争用(已经被持有)的自旋锁,那么该线程就会一直进行忙循环——旋转——等待锁重新可用

那么它会一直占据CPU,那么靠谁来将锁释放呢?

其他CPU,还是硬件中断

回答:

自旋锁spinlock是用来在多处理器环境中工作的一种特殊的锁。如果内核的控制路径发现spinlock没有上锁,就会获取锁并继续执行自己。相反,如果内核控制路径发现锁由运行在另一个CPU上的内核控制路径上锁,就反复执行一条紧凑的循环指令,直到锁被释放。

问题2:

你是说 自旋的线程 在时间片耗尽后让出CPU?

自旋锁 的意义不是在于 不想耗费进程切换的时间吗?

线程自旋过程中,一直占据CPU,除非其他CPU将锁释放吧,可不可以说自旋锁只针对多CPU呢?

回答:

对,自旋锁仅仅对MP有效果,Linux中UP的话展开spin_lock就会是空操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值