Spinlock
關於自旋鎖的問題
在研究自旋鎖同步機制時,我注意到每個函式都有一個對應的宏,例如spin_lock有一個函式
static __always_inline void spin_lock(spinlock_t *lock) { raw_spin_lock(&lock->rlock); }
和宏
#define spin_lock(x) pthread_mutex_lock(x)
為什麼有兩種不同的定義,在什麼情況下使用它們中的每一種?非常感謝!
宏定義在
tools/include/linux/spinlock.h
: 因此它是tools
樹的一部分,並且僅用於核心樹中提供的與核心相關的工具。它的存在使得核心程式碼和使用者空間程式碼可以在核心樹中使用相同的原語;該宏轉換spin_lock
為等效的 pthreads 原語。中定義的內聯函式
include/linux/spinlock.h
用於核心本身。