共用方式為


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 類別 ,以取得比直接呼叫 LockUnlock 更安全的方式來使用此類別。

需求

標頭: 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 ,才能釋放重要區段的擁有權。

另請參閱

CComFakeCriticalSection 類別
類別概觀
CComCritSecLock 類別