linux同步機制

2022-07-27 17:30:26 字數 586 閱讀 8633

1、自旋鎖

獲得自旋鎖之後禁止核心搶占,但可以被中斷上半部打斷。執行於中斷上下文

單cpu不可搶占核心:空操作

單cpu可搶占核心:禁止核心搶占,不發生自旋

多cpu可搶占核心:禁止核心搶占+自旋

2、互斥鎖

核心可以搶占,可以被其他程序搶占,執行於程序上下文

3、讀寫鎖

4、順序鎖

對讀寫鎖的一種優化,禁止核心搶占,讀和寫可以同時進行,多個讀者可以同時訪問臨界資源,但不能同時寫

讀寫可以同時進行這是讀寫鎖不具備的,但使用順序鎖也有限制條件:訪問的臨界資源不能是指標

5、rcu(read-copy update)

讀寫可以同時進行,寫資料時,先拷貝然後修改,再用更新好的資料覆蓋原有資料。

同樣獲得鎖之後禁止核心搶占

6、遞迴鎖

互斥鎖的乙個特例,互斥鎖設定引數pthread_mutex_recursive_np,執行互斥鎖遞迴加鎖和釋放鎖

7、原子操作

8、訊號量

9、訊號

10、barrier(訊號屏障)

barrier()函式前後的**執行不能越過barrier

linux同步機制

一.併發控制 1 自旋鎖 得不到資源,會原地打轉,直到獲得資源為止 定義自旋鎖 spinlock t spin 初始化自旋鎖 spin lock init lock 獲得自旋鎖 spin lock lock 獲得自旋鎖,如果能立即獲得,則馬上返回,否則自旋在那裡,直到該自旋鎖的保持者釋放 spin ...

linux同步機制

原子操作 原子操作是由編譯器來保證的,保證乙個執行緒對資料的操作不會被其他執行緒打斷。當執行緒正在對乙個變數操作而這個操作過程不想被其他執行緒打斷時,可以用原子操作,原子操作結構體 atomic t 原子操作缺點 會阻塞優先順序很高的執行緒。自旋鎖 當乙個執行緒在讀寫乙個共享資源時,加上自旋鎖,其他...

linux 2 6同步機制

作業系統的同步機制是老話題了,不過技術的東西放久不用了就容易忘記,在這裡就訊號量為大家整理一下思緒。在linux系統中,訊號量是一種可以睡眠的鎖。如果程序a希望占有乙個正在被程序b使用的訊號量時,程序a會被推入等待佇列,然後睡眠。直到程序b將持有的訊號量釋放,處於等待佇列中的程序a才會被喚醒,並獲得...