類CCriticalSection的對象表示一個“臨界區”,它是一個用於同步的對象,同一時刻只允許一個執行緒存取資源或代碼區。
在運行性能比較重要而且資源不會跨進程使用時,建議採用臨界區代替信號燈。有關在MFC中使用信號燈的詳細信息,請參閱CMutex。使用CCriticalSection對象之前,需要構造它。在構造函式返回後,就可以使用臨界區了。在使用完之後要調用UnLock函式。
存取由CCriticalSection控制的資源時,要在資源的存取函式中定義一個CSingleLock型的變數。然後調用加鎖對象的Lock成員函式(如CSingleLock::Lock)。此時,調用的執行緒要么獲得對資源的存取權,要么等待他人釋放資源等待加鎖,或者等待他人釋放資源,但又因為逾時而加鎖失敗。這樣就保證了一次只有一個執行緒在存取臨界資源。釋放資源只需調用成員函式UnLock(例如CSingleLock::Unlock),或讓鎖對象在作用範圍之外。
此外,可以單獨地建立一個CCriticalSection對象,並在存取臨界資源之前顯式地存取它。這種方式有助於保持代碼的清晰,但是更容易出錯,因為程式設計師要記住在存取臨界資源前加鎖,存取之後開鎖。
使用時必須包含頭檔案#include "afxmt.h"