關鍵節

關鍵節(Critical Seciton)與mutex的功能類似,但它只能由同一進程中的執行緒使用。關鍵節可以防止共享資源被同時訪問。

原理

進程負責為關鍵節分配記憶體空間,關鍵節實際上是一個CRITICAL_SECTION型的變數,它一次只能被一個執行緒擁有。線上程使用關鍵節之前,必須調用InitializeCriticalSection函式將其初始化。如果執行緒中有一段關鍵的代碼不希望被別的執行緒中斷,那么可以調用EnterCriticalSection函式來申請關鍵節的所有權,在運行完關鍵代碼後再用LeaveCriticalSection函式來釋放所有權。如果在調用EnterCriticalSection時關鍵節對象已被另一個執行緒擁有,那么該函式將無限期等待所有權。
利用互鎖變數可以建立簡單有效的同步機制。使用函式InterLockedIncrementInterLockedDecrement可以增加或減少多個執行緒共享的一個32位變數的值,並且可以檢查結果是否為0。執行緒不必擔心會被其它執行緒中斷而導致錯誤。如果變數位於共享記憶體中,那么不同進程中的執行緒也可以使用這種機制

相關詞條

相關搜尋

熱門詞條

聯絡我們