Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
CComMultiThreadModelNoCS stellt threadsichere Methoden zum Inkrementieren und Verringern des Werts einer Variablen bereit, ohne dass wichtige Abschnittssperrungs- oder Entsperrungsfunktionen erforderlich sind.
Syntax
class CComMultiThreadModelNoCS
Member
Öffentliche Typedefs
| Name | Beschreibung |
|---|---|
| CComMultiThreadModelNoCS::AutoCriticalSection | References-Klasse CComFakeCriticalSection. |
| CComMultiThreadModelNoCS::CriticalSection | References-Klasse CComFakeCriticalSection. |
| CComMultiThreadModelNoCS::ThreadModelNoCS | References-Klasse CComMultiThreadModelNoCS. |
Öffentliche Methoden
| Name | Beschreibung |
|---|---|
| CComMultiThreadModelNoCS::D ecrement | (Statisch) Erhöht den Wert der angegebenen Variablen auf threadsichere Weise. |
| CComMultiThreadModelNoCS::Increment | (Statisch) Erhöht den Wert der angegebenen Variablen auf threadsichere Weise. |
Hinweise
CComMultiThreadModelNoCSähnelt CComMultiThreadModel darin, dass es threadsichere Methoden zum Inkrementieren und Dekrementieren einer Variablen bereitstellt. Wenn Sie jedoch auf eine kritische Abschnittsklasse verweisen, führen CComMultiThreadModelNoCSMethoden wie Lock z. B. nichts Unlock aus.
In der Regel verwenden CComMultiThreadModelNoCS Sie den ThreadModelNoCS typedef Namen. Dies typedef wird in CComMultiThreadModelNoCS, CComMultiThreadModelund CComSingleThreadModel definiert.
Hinweis
Die globalen typedef Namen CComObjectThreadModel und CComGlobalsThreadModel verweisen nicht auf CComMultiThreadModelNoCS.
Zusätzlich zu ThreadModelNoCS, CComMultiThreadModelNoCS definiert AutoCriticalSection und CriticalSection. Diese beiden typedef Namen verweisen auf CComFakeCriticalSection, die leere Methoden zum Abrufen und Freigeben eines kritischen Abschnitts bereitstellt.
Anforderungen
Kopfzeile: atlbase.h
CComMultiThreadModelNoCS::AutoCriticalSection
Bei Verwendung CComMultiThreadModelNoCSverweist der Name AutoCriticalSection auf die typedef Klasse CComFakeCriticalSection.
typedef CComFakeCriticalSection AutoCriticalSection;
Hinweise
Da CComFakeCriticalSection kein kritischer Abschnitt bereitgestellt wird, tun die Methoden nichts.
CComMultiThreadModel und CComSingleThreadModel enthalten auch Definitionen für AutoCriticalSection. Die folgende Tabelle zeigt die Beziehung zwischen der Threadingmodellklasse und der kritischen Abschnittsklasse, auf die verwiesen wird:AutoCriticalSection
| Klasse definiert in | Auf die Klasse verwiesen wird |
|---|---|
CComMultiThreadModelNoCS |
CComFakeCriticalSection |
CComMultiThreadModel |
CComAutoCriticalSection |
CComSingleThreadModel |
CComFakeCriticalSection |
Zusätzlich dazu AutoCriticalSectionkönnen Sie den typedef Namen CriticalSection verwenden. Sie sollten nicht in globalen Objekten oder statischen Klassenmitgliedern angeben AutoCriticalSection , wenn Sie den CRT-Startcode entfernen möchten.
Beispiel
Siehe CComMultiThreadModel::AutoCriticalSection.
CComMultiThreadModelNoCS::CriticalSection
Bei Verwendung CComMultiThreadModelNoCSverweist der Name CriticalSection auf die typedef Klasse CComFakeCriticalSection.
typedef CComFakeCriticalSection CriticalSection;
Hinweise
Da CComFakeCriticalSection kein kritischer Abschnitt bereitgestellt wird, tun die Methoden nichts.
CComMultiThreadModel und CComSingleThreadModel enthalten auch Definitionen für CriticalSection. Die folgende Tabelle zeigt die Beziehung zwischen der Threadingmodellklasse und der kritischen Abschnittsklasse, auf die verwiesen wird:CriticalSection
| Klasse definiert in | Auf die Klasse verwiesen wird |
|---|---|
CComMultiThreadModelNoCS |
CComFakeCriticalSection |
CComMultiThreadModel |
CComCriticalSection |
CComSingleThreadModel |
CComFakeCriticalSection |
Zusätzlich dazu CriticalSectionkönnen Sie den typedef Namen AutoCriticalSectionverwenden. Sie sollten nicht in globalen Objekten oder statischen Klassenmitgliedern angeben AutoCriticalSection , wenn Sie den CRT-Startcode entfernen möchten.
Beispiel
Siehe CComMultiThreadModel::AutoCriticalSection.
CComMultiThreadModelNoCS::D ecrement
Diese statische Funktion ruft die Win32-Funktion InterlockedDecrement auf, wodurch der Wert der Variablen verringert wird, auf die von p verwiesen wird.
static ULONG WINAPI Decrement(LPLONG p) throw();
Parameter
p
[in] Zeiger auf die Variable, die dekrementiert werden soll.
Rückgabewert
Wenn das Ergebnis der Dekrementierung 0 ist, wird Decrement 0 zurückgegeben. Wenn das Ergebnis der Dekrementierung ungleich Null ist, ist der Rückgabewert auch nicht gleich dem Ergebnis der Dekrementierung.
Hinweise
InterlockedDecrement verhindert, dass mehr als ein Thread gleichzeitig diese Variable verwendet.
CComMultiThreadModelNoCS::Increment
Diese statische Funktion ruft die Win32-Funktion InterlockedIncrement auf, wodurch der Wert der Variablen erhöht wird, auf die von p verwiesen wird.
static ULONG WINAPI Increment(LPLONG p) throw();
Parameter
p
[in] Zeiger auf die Variable, die erhöht werden soll.
Rückgabewert
Wenn das Ergebnis des Inkrements 0 ist, gibt Increment 0 zurück. Wenn das Ergebnis des Inkrements ungleich Null ist, ist der Rückgabewert auch nicht null, kann aber nicht gleich dem Ergebnis des Inkrements sein.
Hinweise
InterlockedIncrement verhindert, dass mehr als ein Thread gleichzeitig diese Variable verwendet.
CComMultiThreadModelNoCS::ThreadModelNoCS
Bei Verwendung CComMultiThreadModelNoCSverweist der typedef Name ThreadModelNoCS einfach auf CComMultiThreadModelNoCS.
typedef CComMultiThreadModelNoCS ThreadModelNoCS;
Hinweise
CComMultiThreadModel und CComSingleThreadModel enthalten auch Definitionen für ThreadModelNoCS. Die folgende Tabelle zeigt die Beziehung zwischen der Threadingmodellklasse und der Klasse, auf die verwiesen wird:ThreadModelNoCS
| Klasse definiert in | Auf die Klasse verwiesen wird |
|---|---|
CComMultiThreadModelNoCS |
CComMultiThreadModelNoCS |
CComMultiThreadModel |
CComMultiThreadModelNoCS |
CComSingleThreadModel |
CComSingleThreadModel |
Beachten Sie, dass die Definition von ThreadModelNoCS in CComMultiThreadModelNoCS Symmetrie mit CComMultiThreadModel und CComSingleThreadModel. Nehmen wir beispielsweise an, der Beispielcode in CComMultiThreadModel::AutoCriticalSection der typedeffolgenden Deklarierten:
typedef typename ThreadModel::ThreadModelNoCS _ThreadModel;
Unabhängig von der für ThreadModel (z CComMultiThreadModelNoCS. B. ) _ThreadModel angegebenen Klasse wird entsprechend aufgelöst.
Beispiel
Siehe CComMultiThreadModel::AutoCriticalSection.