聯系我們 - 廣告服務 - 聯系電話:
您的當前位置: > 關注 > > 正文

今頭條!Linux下常見的鎖機制-自旋鎖 自旋鎖spinlock見解

來源:CSDN 時間:2023-01-06 08:17:11

Linux下常見的鎖機制


【資料圖】

Linux下常見的鎖機制主要有:spinlock(自旋鎖)、mutex(互斥鎖)和semaphore(信號量)等;

Windows下還有CRITICAL_SECTION(臨界區),臨界區機制的實現只能是單進程里,它的性能較高;

多線程之spinlock(自旋鎖)

因為準備要參加一個項目,需要了解tcmalloc的實現機制,無意中看到了使用自旋鎖機制,所以臨時記錄一下。

自旋鎖是鎖機制中簡單易用的一種,它是一種忙等待鎖,一般適用于短時間內處理事件等待的輕量級加鎖。

下面給出一個實例:

int  status; spinlock_t     spinlock;

int init_lock(void) {spin_lock_init(&spinlock); }

int  add_status(struct  inode *inode, struct file *filp) {spin_lock(&spinlock); if( OpenCloseStatus ) {spin_unlock(&spinlock); return -EBUSY; } status++; spin_unlock(&spinlock); }

int  sub_status(struct  inode *inode, struct file *filp) {spin_lock(&spinlock); status--; spin_unlock(&spinlock);

}

Spinlock的一些特點

1. spinlock不會導致線線程上下文切換,即不會導致用戶態到內核態的切換;

2. spinlock只能使用在內核態中,即內核代碼中;

3. spinlock鎖之間的代碼盡量簡短,并且spinlock不能放在遞歸的函數中使用。

責任編輯:

標簽:

相關推薦:

精彩放送:

新聞聚焦
Top 岛国精品在线