spinlock

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

簡介

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

用法

spinlock 在 Linux底下是以 spinlock_t 來表示的。使用spinlock必須包含#include

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 的值設回到系統里。使用上是非常簡單明白的。

相關詞條

相關搜尋

熱門詞條

聯絡我們