为什么自旋锁服务员禁用提示功能?

时间:2018-11-02 19:37:00

标签: linux synchronization spinlock

在遵循here中对自旋锁的定义之后,我看到,一旦有任何线程尝试获取自旋锁,抢占即被禁用。

static inline void __raw_spin_lock(raw_spinlock_t *lock)
{
   preempt_disable();
   spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);
   LOCK_CONTENDED(lock, do_raw_spin_trylock, do_raw_spin_lock);
}

我知道,成功获取自旋锁的任何线程都必须禁用抢占,以便其可以继续进行。我不太了解的是,为什么无法获取锁的线程也可以禁用抢占。服务员不应该只是继续尝试尝试,抢占先机然后在下一个时段再试一次吗?

0 个答案:

没有答案