複製鏈接
請複製以下鏈接發送給好友

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