我是linux领域的新手。
在各种情况下,我对使用自旋锁(在内核模式下)感到困惑。请澄清。
Spinlocks用作繁忙的等待机制。
1)自旋锁(单处理器+非抢占式内核) - >不存在(因为如果你在自旋锁中睡觉会导致死锁)
2)自旋锁(单处理器+抢占式内核) - >不应该因为它浪费资源而使用。(当线程在持有锁时休眠时会发生什么?其他进程可以正常执行吗?)
3)自旋锁(多处理器+抢占式内核) - >应谨慎使用。(当线程在持有锁时休眠时会发生什么?其他进程可以正常执行吗?)如果我对上述情况的理解是正确的,请告诉我,请提供任何额外的信息,以帮助我澄清自旋锁的使用。
答案 0 :(得分:1)
在多处理器的情况下,Preemption再次被禁用,IRQ也可能是。
通常,持有自旋锁的任务不应该处于休眠状态。 (如果他们只是禁用了中断的话,那么双重的话)
(免责声明:帖子内容可能温和/非常不准确,因为已经很晚了,我无法验证ATM的详细信息)