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
CComMultiThreadModelNoCS
je 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 CComMultiThreadModelNoCS
metod, 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 CComMultiThreadModelNoCS
objektu , CComMultiThreadModel
a CComSingleThreadModel.
Poznámka:
Globální typedef
názvy CComObjectThreadModel a CComGlobalsThreadModel neodkazují na CComMultiThreadModelNoCS
.
Kromě , ThreadModelNoCS
CComMultiThreadModelNoCS
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í CComMultiThreadModelNoCS
odkazuje 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 AutoCriticalSection
odkazuje:
Třída definovaná v | Odkazovaná třída |
---|---|
CComMultiThreadModelNoCS |
CComFakeCriticalSection |
CComMultiThreadModel |
CComAutoCriticalSection |
CComSingleThreadModel |
CComFakeCriticalSection |
Kromě AutoCriticalSection
toho 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í CComMultiThreadModelNoCS
odkazuje 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 CriticalSection
odkazuje:
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í CComMultiThreadModelNoCS
se 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 ThreadModelNoCS
odkazuje:
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.