1、自旋鎖和信號量
使用自旋鎖的進程不能睡眠,使用信號量的進程可以睡眠。中斷服務例程中的互斥使用的是自旋鎖,原因是在中斷處理例程中,硬中斷是關閉的,這樣會丟失可能到來的中斷。
2、RCU 鎖
討論的內容包括原子操作;自旋鎖,內存屏障;讀寫自旋鎖,順序鎖;信號量,讀寫信號量,完成量;互斥量;RCU機制;BKL(大內核鎖)。
通過上述討論的一些內容,我們可以總結得到以下一些基本觀點:① 原子操作對整數操作,自旋鎖和信號量應用較爲廣泛。② 當臨界區小應選擇自旋鎖,反之,則應選擇信號量。③ 關於信號量的選擇問題:信號量是針對進程級的,它在內核中以進程方式運行,故它一般的使用條件是當申請信號量的進程需佔用資源較長時間時。④ 讀寫自旋鎖和讀寫信號量條件相對於自旋鎖和信號量來說放寬不少,這一點可從它們的定義得出。⑤ RCU機制的應用目前越來越廣。⑥ 內存屏障函數使用起來較爲複雜,而且多數情況下需要和具體的體系結構相關,故而一般不建議使用。( 自旋不會睡眠)