三種鎖各有優缺點:
1 .效率
臨界區是輕量級的鎖,通常不會產生核心物件。其內部實現是基於自旋鎖與事件物件等待來實現鎖定的。 互斥體與訊號量都是核心物件,效率比臨界區差。
2.重入
臨界區與互斥體都是可以重入的,也就是不會鎖定自己執行緒的多次進入。多執行緒鎖粒度比較粗的時候, 且互相呼叫,重入的可能性很大,是否支援重入很重要。
3. 作用範圍
核心物件通常作用範圍是垮程序的。所以互斥量與訊號量都是可以垮程序使用。
4. 釋放
互斥量與訊號量的釋放都是基於引用計數,獲取後都需要呼叫釋放。
5. 同步
訊號量可以同步資源的訪問,互斥體與臨界區只能互斥。我們需要同步訪問一些資源的時候,可以使用訊號量。在單寫多讀的場景下,使用訊號量有較大優勢。
6. 粒度
臨界區基於自旋的實現方式決定了它通常不適合粗粒度的鎖定,加鎖後必須快速解鎖。
互斥鎖 臨界區 訊號量 事件的區別
引用位址 四種程序或執行緒同步互斥的控制方法 1 臨界區 通過對多執行緒的序列化來訪問公共資源或一段 速度快,適合控制資料訪問。2 互斥量 為協調共同對乙個共享資源的單獨訪問而設計的。3 訊號量 為控制乙個具有有限數量使用者資源而設計。4 事 件 用來通知執行緒有一些事件已發生,從而啟動後繼任務的開...
互斥鎖 臨界區 訊號量 事件的區別
四種程序或執行緒同步互斥的控制方法 1 臨界區 通過對多執行緒的序列化來訪問公共資源或一段 速度快,適合控制資料訪問。2 互斥量 為協調共同對乙個共享資源的單獨訪問而設計的。3 訊號量 為控制乙個具有有限數量使用者資源而設計。4 事 件 用來通知執行緒有一些事件已發生,從而啟動後繼任務的開始。臨界區...
事件 訊號量 臨界區 互斥鎖
handle createevent lpsecurity attributes lpeventattributes,安全屬性 bool bmanualreset,復位方式 bool binitialstate,初始狀態 false建立時為未通知狀態 true建立時為已通知狀態 lpctstr lp...