spinlock

spinlock

spinlock是專為防止多處理器並發而引入的一種鎖。

簡介,用法,程式用例,

簡介

Spinlock,中文譯名為“自旋鎖”。

用法

spinlock 在 Linux底下是以 spinlock_t 來表示的。使用spinlock必須包含#include <linux/spinlock>
spinlock主要是用在SMP的環境底下,
在SMP環境下它的結構如下
typedef struct
{
volatile unsigned int lock;
}
spinlock_t;

程式用例

使用 spinlock
spinlock t xxx lock = SPIN_LOCK_UNLOCKED;
unsigned long flags;
spin lock irqsave (&xxx lock, flags)
...critical section... spin
unlock irqrestore (&xxx lock, flags)
這一組的函式在使用上是最保險的,用的頻率也算是最多的。首先在使用前,必須先定義一個 spinlock_t 類型的變數,並把初始值設為 SPIN_LOCK_UNLOCKED 。除此之外,還必須有一個 unsigned long 類型的變數,這個變數是用來將 CPU 的 flag 儲存起來的,等 critical section 執行完了,再把 flag 的值設回到系統里。使用上是非常簡單明白的。

相關詞條

熱門詞條

聯絡我們