可重入互斥鎖

計算機科學中,可重入互斥鎖(英語:reentrant mutex)是互斥鎖的一種,同一線程對其多次加鎖不會產生死鎖。可重入互斥鎖也稱遞歸互斥鎖(英語:recursive mutex)或遞歸鎖(英語:recursive lock)。

如果對已經上鎖的普通互斥鎖進行「加鎖」操作,其結果要麼失敗,要麼會阻塞至解鎖。而如果換作可重入互斥鎖,當且僅當嘗試加鎖的線程就是持有該鎖的線程時,類似的加鎖操作就會成功。可重入互斥鎖一般都會記錄被加鎖的次數,只有執行相同次數的解鎖操作才會真正解鎖。

遞歸互斥鎖解決了普通互斥鎖不可重入的問題:如果函數先持有鎖,然後執行回調,但回調的內容是調用它自己,就會產生死鎖[1]

另見

參考文獻

  1. ^ Buschmann, Frank; Henney, Kevlin; Schmidt, Douglas C. Pattern-Oriented Software Architecture, A Pattern Language for Distributed Computing. John Wiley & Sons. 2007: 374 [2018-07-18]. (原始內容存檔於2016-05-09) (英語).