Sdílet prostřednictvím


CComMultiThreadModelNoCS – třída

CComMultiThreadModelNoCS poskytuje metody bezpečné pro přístup z více vláken a dekrementace hodnoty proměnné bez kritického uzamčení nebo odemčení funkce.

Syntaxe

class CComMultiThreadModelNoCS

Členové

Veřejné definice typedef

Název Popis
CComMultiThreadModelNoCS::AutoCriticalSection Odkazuje na třídu CComFakeCriticalSection.
CComMultiThreadModelNoCS::CriticalSection Odkazy – třída CComFakeCriticalSection.
CComMultiThreadModelNoCS::ThreadModelNoCS Odkazy – třída CComMultiThreadModelNoCS.

Veřejné metody

Název Popis
CComMultiThreadModelNoCS::D krementace (Statické) Sníží hodnotu zadané proměnné bezpečným způsobem.
CComMultiThreadModelNoCS::Increment (Statické) Zvýší hodnotu zadané proměnné bezpečným způsobem.

Poznámky

CComMultiThreadModelNoCSje podobný CComMultiThreadModel v tom, že poskytuje metody bezpečné pro vlákno pro zvýšení a dekrementace proměnné. Pokud však odkazujete na kritickou třídu oddílu prostřednictvím CComMultiThreadModelNoCSmetod, jako Lock jsou a Unlock nebudou dělat nic.

Obvykle se používá prostřednictvím CComMultiThreadModelNoCS ThreadModelNoCS typedef názvu. Toto typedef je definováno v CComMultiThreadModelNoCSobjektu , CComMultiThreadModela CComSingleThreadModel.

Poznámka:

Globální typedef názvy CComObjectThreadModel a CComGlobalsThreadModel neodkazují na CComMultiThreadModelNoCS.

Kromě , ThreadModelNoCSCComMultiThreadModelNoCS definuje AutoCriticalSection a CriticalSection. Tyto druhé dva typedef názvy odkazují na CComFakeCriticalSection, která poskytuje prázdné metody spojené se získáním a uvolněním kritické části.

Požadavky

Hlavička: atlbase.h

CComMultiThreadModelNoCS::AutoCriticalSection

Při použití CComMultiThreadModelNoCSodkazuje na typedef název AutoCriticalSection třídy CComFakeCriticalSection.

typedef CComFakeCriticalSection AutoCriticalSection;

Poznámky

Protože CComFakeCriticalSection neposkytuje kritickou část, její metody nedělají nic.

CComMultiThreadModel a CComSingleThreadModel také obsahují definice pro AutoCriticalSection. Následující tabulka ukazuje vztah mezi třídou modelu threadingu a kritickou třídou oddílu, na kterou AutoCriticalSectionodkazuje:

Třída definovaná v Odkazovaná třída
CComMultiThreadModelNoCS CComFakeCriticalSection
CComMultiThreadModel CComAutoCriticalSection
CComSingleThreadModel CComFakeCriticalSection

Kromě AutoCriticalSectiontoho můžete použít typedef název CriticalSection. Pokud chcete odstranit spouštěcí kód CRT, neměli byste je zadávat AutoCriticalSection v globálních objektech ani ve statických členech třídy.

Příklad

Viz CComMultiThreadModel::AutoCriticalSection.

CComMultiThreadModelNoCS::CriticalSection

Při použití CComMultiThreadModelNoCSodkazuje na typedef název CriticalSection třídy CComFakeCriticalSection.

typedef CComFakeCriticalSection CriticalSection;

Poznámky

Protože CComFakeCriticalSection neposkytuje kritickou část, její metody nedělají nic.

CComMultiThreadModel a CComSingleThreadModel také obsahují definice pro CriticalSection. Následující tabulka ukazuje vztah mezi třídou modelu threadingu a kritickou třídou oddílu, na kterou CriticalSectionodkazuje:

Třída definovaná v Odkazovaná třída
CComMultiThreadModelNoCS CComFakeCriticalSection
CComMultiThreadModel CComCriticalSection
CComSingleThreadModel CComFakeCriticalSection

Kromě CriticalSection, můžete použít typedef název AutoCriticalSection. Pokud chcete odstranit spouštěcí kód CRT, neměli byste je zadávat AutoCriticalSection v globálních objektech ani ve statických členech třídy.

Příklad

Viz CComMultiThreadModel::AutoCriticalSection.

CComMultiThreadModelNoCS::D krementace

Tato statická funkce volá funkci Win32 InterlockedDecrement, která dekrementuje hodnotu proměnné, na kterou odkazuje p.

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

Parametry

p
[v] Ukazatel na proměnnou, která se má dekrementovat.

Návratová hodnota

Pokud je výsledek dekrementu 0, Decrement vrátí hodnotu 0. Pokud je výsledek dekrementu nenulový, návratová hodnota je také nenulová, ale nemusí se rovnat výsledku dekrementu.

Poznámky

InterlockedDecrement zabraňuje souběžným používáním této proměnné více než jedno vlákno.

CComMultiThreadModelNoCS::Increment

Tato statická funkce volá funkci Win32 InterlockedIncrement, která zvýší hodnotu proměnné, na kterou odkazuje p.

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

Parametry

p
[v] Ukazatel na proměnnou, která se má zvýšit.

Návratová hodnota

Pokud je výsledek přírůstku 0, vrátí inkrementace hodnotu 0. Pokud je výsledek přírůstku nenulový, návratová hodnota je také nenulová, ale nemusí se rovnat výsledku přírůstku.

Poznámky

InterlockedIncrement zabraňuje souběžným používáním této proměnné více než jedno vlákno.

CComMultiThreadModelNoCS::ThreadModelNoCS

Při použití CComMultiThreadModelNoCSse název typedef ThreadModelNoCS jednoduše odkazuje CComMultiThreadModelNoCS.

typedef CComMultiThreadModelNoCS ThreadModelNoCS;

Poznámky

CComMultiThreadModel a CComSingleThreadModel také obsahují definice pro ThreadModelNoCS. Následující tabulka ukazuje vztah mezi třídou modelu threadingu a třídou, na kterou ThreadModelNoCSodkazuje:

Třída definovaná v Odkazovaná třída
CComMultiThreadModelNoCS CComMultiThreadModelNoCS
CComMultiThreadModel CComMultiThreadModelNoCS
CComSingleThreadModel CComSingleThreadModel

Všimněte si, že definice ThreadModelNoCS in CComMultiThreadModelNoCS poskytuje symetrii s CComMultiThreadModel a CComSingleThreadModel. Předpokládejme například, že vzorový kód deklarovaný jako CComMultiThreadModel::AutoCriticalSection následující typedef:

typedef typename ThreadModel::ThreadModelNoCS _ThreadModel;

Bez ohledu na třídu zadanou pro ThreadModel (například CComMultiThreadModelNoCS) _ThreadModel se odpovídajícím způsobem přeloží.

Příklad

Viz CComMultiThreadModel::AutoCriticalSection.

Viz také

Přehled třídy