分享方式:


CComMultiThreadModelNoCS 類別

CComMultiThreadModelNoCS 提供線程安全的方法,可遞增和遞減變數的值,而不需要關鍵區段鎖定或解除鎖定功能。

語法

class CComMultiThreadModelNoCS

成員

公用 Typedefs

名稱 描述
CComMultiThreadModelNoCS::AutoCriticalSection 參考類別 CComFakeCriticalSection
CComMultiThreadModelNoCS::CriticalSection 參考類別 CComFakeCriticalSection
CComMultiThreadModelNoCS::ThreadModelNoCS 參考類別 CComMultiThreadModelNoCS

公用方法

名稱 描述
CComMultiThreadModelNoCS::D ecrement (靜態)以安全線程的方式遞減指定變數的值。
CComMultiThreadModelNoCS::Increment (靜態)以安全線程的方式遞增指定變數的值。

備註

CComMultiThreadModelNoCS類似於 CComMultiThreadModel,因為它提供安全線程的方法,以遞增和遞減變數。 不過,當您透過 CComMultiThreadModelNoCS參考重要區段類別時,例如 LockUnlock 等方法不會執行任何動作。

一般而言,您會透過ThreadModelNoCStypedef名稱使用 CComMultiThreadModelNoCS 。 這是typedef在 、 CComMultiThreadModelCComSingleThreadModelCComMultiThreadModelNoCS定義。

注意

全域typedef名稱 CComObjectThreadModelCComGlobalsThreadModel 不會參考 CComMultiThreadModelNoCS

除了 ThreadModelNoCS之外, CComMultiThreadModelNoCSAutoCriticalSection 定義 和 CriticalSection。 后兩 typedef 個名稱參考 CComFakeCriticalSection,其提供與取得和釋放重要區段相關聯的空白方法。

需求

標頭: atlbase.h

CComMultiThreadModelNoCS::AutoCriticalSection

使用 CComMultiThreadModelNoCS時,typedef名稱AutoCriticalSection會參考 CComFakeCriticalSection 類別

typedef CComFakeCriticalSection AutoCriticalSection;

備註

因為 CComFakeCriticalSection 未提供重要區段,因此其方法不會執行任何動作。

CComMultiThreadModelCComSingleThreadModel 也包含 的定義 AutoCriticalSection。 下表顯示線程模型類別與 所 AutoCriticalSection參考的重要區段類別之間的關聯性:

中定義的類別 參考的類別
CComMultiThreadModelNoCS CComFakeCriticalSection
CComMultiThreadModel CComAutoCriticalSection
CComSingleThreadModel CComFakeCriticalSection

除了 AutoCriticalSection之外,您可以使用 typedef CriticalSection 名稱。 如果您要排除 CRT 啟動程式代碼,就不應該在全域物件或靜態類別成員中指定 AutoCriticalSection

範例

請參閱 CComMultiThreadModel::AutoCriticalSection

CComMultiThreadModelNoCS::CriticalSection

使用 CComMultiThreadModelNoCS時,typedef名稱CriticalSection會參考 CComFakeCriticalSection 類別

typedef CComFakeCriticalSection CriticalSection;

備註

因為 CComFakeCriticalSection 未提供重要區段,因此其方法不會執行任何動作。

CComMultiThreadModelCComSingleThreadModel 也包含 的定義 CriticalSection。 下表顯示線程模型類別與 所 CriticalSection參考的重要區段類別之間的關聯性:

中定義的類別 參考的類別
CComMultiThreadModelNoCS CComFakeCriticalSection
CComMultiThreadModel CComCriticalSection
CComSingleThreadModel CComFakeCriticalSection

除了 CriticalSection之外,您還可以使用 typedef 名稱 AutoCriticalSection。 如果您要排除 CRT 啟動程式代碼,就不應該在全域物件或靜態類別成員中指定 AutoCriticalSection

範例

請參閱 CComMultiThreadModel::AutoCriticalSection

CComMultiThreadModelNoCS::D ecrement

此靜態函式會呼叫 Win32 函式 InterlockedDecrement,它會遞減 p指向的變數值。

static ULONG WINAPI Decrement(LPLONG p) throw();

參數

p
[in]要遞減之變數的指標。

傳回值

如果遞減的結果為 0,則 Decrement 傳回 0。 如果遞減的結果為非零,則傳回值也是非零值,但可能不等於遞減的結果。

備註

InterlockedDecrement 可防止一個以上的線程同時使用這個變數。

CComMultiThreadModelNoCS::Increment

此靜態函式會呼叫 Win32 函式 InterlockedIncrement,這會遞增 p指向的變數值。

static ULONG WINAPI Increment(LPLONG p) throw();

參數

p
[in]要遞增之變數的指標。

傳回值

如果增量的結果為 0,則 Increment 會傳回 0。 如果增量的結果為非零,則傳回值也是非零值,但可能不等於遞增的結果。

備註

InterlockedIncrement 可防止多個線程同時使用這個變數。

CComMultiThreadModelNoCS::ThreadModelNoCS

使用 CComMultiThreadModelNoCS時, typedef 名稱 ThreadModelNoCS 只會參考 CComMultiThreadModelNoCS

typedef CComMultiThreadModelNoCS ThreadModelNoCS;

備註

CComMultiThreadModelCComSingleThreadModel 也包含 的定義 ThreadModelNoCS。 下表顯示線程模型類別與 所 ThreadModelNoCS參考類別之間的關聯性:

中定義的類別 參考的類別
CComMultiThreadModelNoCS CComMultiThreadModelNoCS
CComMultiThreadModel CComMultiThreadModelNoCS
CComSingleThreadModel CComSingleThreadModel

請注意, 中的 CComMultiThreadModelNoCS 定義ThreadModelNoCS會提供 CComMultiThreadModelCComSingleThreadModel的對稱性。 例如,假設中的 CComMultiThreadModel::AutoCriticalSection 範例程式代碼宣告如下 typedef

typedef typename ThreadModel::ThreadModelNoCS _ThreadModel;

不論針對 ThreadModel 指定的類別為何(例如 CComMultiThreadModelNoCS), _ThreadModel 都會據以解析。

範例

請參閱 CComMultiThreadModel::AutoCriticalSection

另請參閱

類別概觀