Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.