CComMultiThreadModelNoCS osztály

Megjegyzés:

Az aktív sablontár (ATL) továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

CComMultiThreadModelNoCS Szálbiztos módszereket biztosít egy változó értékének növeléséhez és csökkenéséhez kritikus szakaszzárolási vagy zárolási funkciók nélkül.

Szemantika

class CComMultiThreadModelNoCS

Tagok

Nyilvános típustdefiníciók

Név Description
CComMultiThreadModelNoCS::AutoCriticalSection A CComFakeCriticalSection osztályra hivatkozik.
CComMultiThreadModelNoCS::CriticalSection Hivatkozások osztály CComFakeCriticalSection.
CComMultiThreadModelNoCS::ThreadModelNoCS Hivatkozások osztály CComMultiThreadModelNoCS.

Nyilvános módszerek

Név Description
CComMultiThreadModelNoCS::D ecrement (Statikus) A megadott változó értékét szálbiztos módon dekreálja.
CComMultiThreadModelNoCS::Növekmény (Statikus) A megadott változó értékét szálbiztos módon növeli.

Megjegyzések

CComMultiThreadModelNoCS hasonló a CComMultiThreadModel-hez , mivel szálbiztos metódusokat biztosít a változók növeléséhez és visszaszorításához. Ha azonban egy kritikus szakaszosztályra hivatkozik CComMultiThreadModelNoCS, akkor az olyan metódusok, mint például Lock a nem Unlock tesznek semmit.

Általában a ThreadModelNoCStypedef nevet használjaCComMultiThreadModelNoCS. Ez typedef a CComSingleThreadModel és a , CComMultiThreadModelés a CComSingleThreadModel függvényben CComMultiThreadModelNoCSvan definiálva.

Megjegyzés:

A CComObjectThreadModel és a CComGlobalsThreadModel globális typedef nevek nem hivatkoznak.CComMultiThreadModelNoCS

Amellett, hogy ThreadModelNoCSdefiniálja AutoCriticalSectionCComMultiThreadModelNoCS és CriticalSection. Ez utóbbi két typedef név a CComFakeCriticalSection-ra hivatkozik, amely üres metódusokat biztosít egy kritikus szakasz beszerzéséhez és kiadásához.

Requirements

Fejléc: atlbase.h

CComMultiThreadModelNoCS::AutoCriticalSection

Használata esetén CComMultiThreadModelNoCSa név AutoCriticalSection a typedefCComFakeCriticalSection osztályra hivatkozik.

typedef CComFakeCriticalSection AutoCriticalSection;

Megjegyzések

Mivel CComFakeCriticalSection nem biztosít kritikus szakaszt, a metódusok nem tesznek semmit.

A CComMultiThreadModel és a CComSingleThreadModel is tartalmaz definíciókat a AutoCriticalSection. Az alábbi táblázat a szálmodell-osztály és a hivatkozott kritikus szakaszosztály AutoCriticalSectionközötti kapcsolatot mutatja be:

A következőben definiált osztály: Hivatkozott osztály
CComMultiThreadModelNoCS CComFakeCriticalSection
CComMultiThreadModel CComAutoCriticalSection
CComSingleThreadModel CComFakeCriticalSection

AutoCriticalSectionEmellett használhatja a typedefCriticalSection nevet is. Ha meg szeretné szüntetni a CRT indítási kódját, ne adjon meg AutoCriticalSection globális objektumokat vagy statikus osztálytagokat.

Example

Lásd: CComMultiThreadModel::AutoCriticalSection.

CComMultiThreadModelNoCS::CriticalSection

Használata esetén CComMultiThreadModelNoCSa név CriticalSection a typedefCComFakeCriticalSection osztályra hivatkozik.

typedef CComFakeCriticalSection CriticalSection;

Megjegyzések

Mivel CComFakeCriticalSection nem biztosít kritikus szakaszt, a metódusok nem tesznek semmit.

A CComMultiThreadModel és a CComSingleThreadModel is tartalmaz definíciókat a CriticalSection. Az alábbi táblázat a szálmodell-osztály és a hivatkozott kritikus szakaszosztály CriticalSectionközötti kapcsolatot mutatja be:

A következőben definiált osztály: Hivatkozott osztály
CComMultiThreadModelNoCS CComFakeCriticalSection
CComMultiThreadModel CComCriticalSection
CComSingleThreadModel CComFakeCriticalSection

CriticalSectionEmellett a nevet AutoCriticalSectionis használhatjatypedef. Ha meg szeretné szüntetni a CRT indítási kódját, ne adjon meg AutoCriticalSection globális objektumokat vagy statikus osztálytagokat.

Example

Lásd: CComMultiThreadModel::AutoCriticalSection.

CComMultiThreadModelNoCS::D ecrement

Ez a statikus függvény meghívja az InterlockedDecrement Win32 függvényt, amely a p által mutatott változó értékét mérsékeli.

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

Paraméterek

p
[in] Mutasson a dekrementálandó változóra.

Visszaadott érték

Ha a decrement eredménye 0, akkor Decrement 0 értéket ad vissza. Ha a dekrement eredménye nemzero, akkor a visszatérési érték is nonzero, de nem lehet egyenlő a decrement eredményével.

Megjegyzések

Az InterlockedDecrement megakadályozza, hogy több szál egyidejűleg használja ezt a változót.

CComMultiThreadModelNoCS::Növekmény

Ez a statikus függvény meghívja az InterlockedIncrement Win32 függvényt, amely növeli a p által mutatott változó értékét.

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

Paraméterek

p
[in] Mutasson a növelendő változóra.

Visszaadott érték

Ha a növekmény eredménye 0, akkor a Növekmény 0 értéket ad vissza. Ha a növekmény eredménye nemzero, akkor a visszatérési érték is nonzero, de lehet, hogy nem egyenlő a növekmény eredményével.

Megjegyzések

Az InterlockedIncrement megakadályozza, hogy több szál egyidejűleg használja ezt a változót.

CComMultiThreadModelNoCS::ThreadModelNoCS

Használata CComMultiThreadModelNoCSesetén a typedef név ThreadModelNoCS egyszerűen hivatkozik CComMultiThreadModelNoCS.

typedef CComMultiThreadModelNoCS ThreadModelNoCS;

Megjegyzések

A CComMultiThreadModel és a CComSingleThreadModel is tartalmaz definíciókat a ThreadModelNoCS. Az alábbi táblázat a szálmodell-osztály és a hivatkozott ThreadModelNoCSosztály közötti kapcsolatot mutatja be:

A következőben definiált osztály: Hivatkozott osztály
CComMultiThreadModelNoCS CComMultiThreadModelNoCS
CComMultiThreadModel CComMultiThreadModelNoCS
CComSingleThreadModel CComSingleThreadModel

Vegye figyelembe, hogy a in definíciója ThreadModelNoCS szimmetrikus és CComSingleThreadModelCComMultiThreadModel .CComMultiThreadModelNoCS Tegyük fel például, hogy az alábbi typedefdeklarált mintakódCComMultiThreadModel::AutoCriticalSection:

typedef typename ThreadModel::ThreadModelNoCS _ThreadModel;

A megadott ThreadModel osztálytól függetlenül (például CComMultiThreadModelNoCS) _ThreadModel ennek megfelelően oldja fel a problémát.

Example

Lásd: CComMultiThreadModel::AutoCriticalSection.

Lásd még

osztály áttekintése