Linux多執行緒,鎖的相關問題

2021-08-04 22:07:05 字數 861 閱讀 8260

為實現保護共享資源而提出一種鎖機制。其實,自旋鎖與互斥鎖比較類似,它們都是為了解決對某項資源的互斥使用。無論是互斥鎖,還是自旋鎖,在任何時刻最多只能有乙個保持者,即任何時刻最多只能有乙個執行單元獲得鎖。但是兩者在排程機制上略有不同。對於互斥鎖,如果資源已經被占用,資源申請者只能進入睡眠狀態。但是自旋鎖不會引起呼叫者睡眠,如果自旋鎖已經被別的執行單元保持,呼叫者就一直迴圈在那裡檢查是否該自旋鎖的保持者已經釋放了鎖,」自旋」一詞就是因此而得名。

讀寫鎖實際是一種特殊的自旋鎖,它把對共享資源的訪問者劃分成讀者和寫者,讀者只對共享資源進行讀訪問,寫者則需要對共享資源進行寫操作。

如果讀寫鎖當前沒有讀者,也沒有寫者,那麼寫者可以立刻獲得讀寫鎖,否則它必須自旋在那裡,直到沒有任何寫者或讀者。

如果讀寫鎖沒有寫者,那麼讀者可以立即獲得該讀寫鎖,否則讀者必須自旋在那裡,直到寫者釋放該讀寫鎖。

讀寫鎖posix中定義及例項:

根據上述原則,偽**實現如下:

count_mutex = mutex_init();

write_mutex = mutex_init();

// 讀寫鎖上讀者的計數

read_count = 0;

// 讀者加鎖

void read_lock

unlock(count_mutex);

}// 讀者開鎖

void read_unlock

unlock(count_mutex);

}//能不能上寫鎖,得看讀者們

void write_lock

void write_unlock

參考資料

linux多執行緒開發

讀寫鎖機制

多執行緒鎖的問題

public class synctest start new thread new runnable start class a catch interruptedexception e system.out.println i public void f2 catch interruptedex...

Linux多執行緒互斥鎖

多執行緒程式設計中,多執行緒程式設計 可以用互斥鎖 也稱互斥量 可以用來保護關鍵 段,以確保其獨佔式的訪問,這有點像二進位制訊號量。posix互斥鎖相關函式主要有以下5個 cpp view plain copy include intpthread mutex init pthread mutex ...

linux多執行緒(互斥鎖)

當多個執行緒想要對同乙個資源進行操作的時候,為了使得不出現髒讀的情況,要用互斥鎖來規定執行緒的先後順序。互斥鎖和訊號量的作用類似。鎖的資料型別 pthread mutex t mutes 鎖的初始化 int pthread mutex init pthread mutex t const pthre...