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