CComMultiThreadModelNoCS-Klasse
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 CComMultiThreadModelNoCS
Methoden wie Lock
z. B. nichts Unlock
aus.
In der Regel verwenden CComMultiThreadModelNoCS
Sie den ThreadModelNoCS
typedef
Namen. Dies typedef
wird in CComMultiThreadModelNoCS
, CComMultiThreadModel
und 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 CComMultiThreadModelNoCS
verweist 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 AutoCriticalSection
kö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 CComMultiThreadModelNoCS
verweist 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 CriticalSection
können Sie den typedef
Namen AutoCriticalSection
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::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 CComMultiThreadModelNoCS
verweist 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 typedef
folgenden 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.