共用方式為


CCriticalSection 類別

表示「關鍵區段」—一次只允許一個執行緒存取資源或程式碼區段的同步處理的物件。

class CCriticalSection : public CSyncObject

Members

h5zew56b.collapse_all(zh-tw,VS.110).gif公用建構函式

名稱

描述

CCriticalSection::CCriticalSection

建構 CCriticalSection 物件。

h5zew56b.collapse_all(zh-tw,VS.110).gif公用方法

名稱

描述

CCriticalSection::Lock

使用將 CCriticalSection 物件的存取權。

CCriticalSection::Unlock

釋放 CCriticalSection 物件。

h5zew56b.collapse_all(zh-tw,VS.110).gif公用運算子

名稱

描述

CCriticalSection::operator CRITICAL_SECTION*

擷取指標內部 CRITICAL_SECTION 物件。

h5zew56b.collapse_all(zh-tw,VS.110).gif公用資料成員

名稱

描述

CCriticalSection::m_sect

CRITICAL_SECTION 物件。

備註

在中,只有一個執行緒可以同時允許修改資料或某些其他控制資源時,關鍵區段就很有用。例如,將節點加入至連結的清單是應該由一個執行緒一次只允許的處理序。您可以使用控制項連結串列的 CCriticalSection 物件,只有一個執行緒可以對清單中每個的存取權。

注意事項注意事項

實際的 Win32 CRITICAL_SECTION 物件提供 CCriticalSection 類別的功能。

關鍵區段 (而非使用 Mutex (請參閱 CMutex),當速度非常重要的資源,而不會跨越處理序界限內。

有兩個方法會使用 CCriticalSection 物件:獨立應用程式和內嵌於類別。

  • 會在需要時,使用獨立 CCriticalSection 物件的個別方法, CCriticalSection 建構物件。在從建構函式的成功傳回時,明確鎖定具有呼叫的物件。 鎖定之後。但是,在進行存取這個關鍵區段時,請呼叫 解除鎖定 。這個方法,不過,讀取原始程式碼的人的更清楚,比較容易發生錯誤的存取,之前或之後,您必須記住鎖定和解除鎖定關鍵區段。

    較好的方法是使用 CSingleLock 類別。它也有 Lock 和 Unlock 方法,不過,您不需要擔心解除鎖定資源,如果發生例外狀況。

  • 內嵌的方法可以具有多個執行緒共用類別將 CCriticalSection型別的資料成員加入到類別和鎖定資料成員時,需要。

如需使用 CCriticalSection 物件的詳細資訊,請參閱本文 多執行緒:如何使用同步類別

繼承階層架構

CObject

CSyncObject

CCriticalSection

需求

Header: afxmt.h

請參閱

參考

CSyncObject 類別

階層架構圖

CMutex 類別