Linux kernel
中最基本的lock
原语就是spin lock
(自旋锁)。实例代码如下:
static DEFINE_SPINLOCK(xxx_lock);
unsigned long flags;
spin_lock_irqsave(&xxx_lock, flags);
... critical section here ..
spin_unlock_irqrestore(&xxx_lock, flags);
以上代码总是安全的(包括可以用在中断处理函数),并可以在UP
和SMP
上都可以正常工作。