CComCriticalSection 類別
這個類別提供方法來取得和釋放重要區段對象的擁有權。
語法
class CComCriticalSection
成員
公用建構函式
名稱 | 描述 |
---|---|
CComCriticalSection::CComCriticalSection | 建構函式。 |
公用方法
名稱 | 描述 |
---|---|
CComCriticalSection::Init | 建立和初始化重要區段物件。 |
CComCriticalSection::Lock | 取得重要區段對象的擁有權。 |
CComCriticalSection::Term | 釋放重要區段物件所使用的系統資源。 |
CComCriticalSection::Unlock | 釋放重要區段對象的擁有權。 |
公用資料成員
名稱 | 描述 |
---|---|
CComCriticalSection::m_sec | CRITICAL_SECTION物件。 |
備註
CComCriticalSection
類似於 CComAutoCriticalSection 類別,不同之處在於您必須明確初始化和釋放重要區段。
一般而言,您會透過typedef
名稱CriticalSection來使用CComCriticalSection
。 此名稱會在使用 CComMultiThreadModel 時參考CComCriticalSection
。
請參閱 CComCritSecLock 類別 ,以取得比直接呼叫 Lock
和 Unlock
更安全的方式來使用此類別。
需求
標頭: atlcore.h
CComCriticalSection::CComCriticalSection
建構函式。
CComCriticalSection() throw();
備註
將 m_sec 數據成員設定為NULL。
CComCriticalSection::Init
呼叫 Win32 函式 InitializeCriticalSection,這個區段物件會初始化包含在m_sec數據成員中的重要區段物件。
HRESULT Init() throw();
傳回值
傳回失敗時成功、E_OUTOFMEMORY或E_FAIL S_OK。
CComCriticalSection::Lock
呼叫 Win32 函式 EnterCriticalSection,等候線程取得m_sec數據成員中所含重要區段對象的擁有權。
HRESULT Lock() throw();
傳回值
傳回失敗時成功、E_OUTOFMEMORY或E_FAIL S_OK。
備註
關鍵區段對象必須先使用對 Init 方法的呼叫來初始化。 當受保護的程式代碼完成執行時,線程必須呼叫 Unlock 以釋放重要區段的擁有權。
CComCriticalSection::m_sec
包含所有 CComCriticalSection
方法所使用的重要區段物件。
CRITICAL_SECTION m_sec;
CComCriticalSection::Term
呼叫 Win32 函式 DeleteCriticalSection,它會釋放包含在m_sec數據成員中之重要區段物件所使用的所有資源。
HRESULT Term() throw();
傳回值
傳回S_OK。
備註
呼叫之後 Term
,就無法再使用關鍵區段進行同步處理。
CComCriticalSection::Unlock
呼叫 Win32 函式 LeaveCriticalSection,此函式會釋放m_sec數據成員中包含的重要區段對象的擁有權。
HRESULT Unlock() throw();
傳回值
傳回S_OK。
備註
若要先取得擁有權,線程必須呼叫 Lock 方法。 對的每個呼叫 Lock
都需要對應的呼叫 Unlock
,才能釋放重要區段的擁有權。