CComMultiThreadModelNoCS, classe

CComMultiThreadModelNoCS fournit des méthodes thread-safe pour incrémenter et décrémenter la valeur d’une variable, sans verrouillage de section critique ou fonctionnalité de déverrouillage.

Syntaxe

class CComMultiThreadModelNoCS

Membres

Typedefs publics

Nom Description
CComMultiThreadModelNoCS ::AutoCriticalSection Classe References CComFakeCriticalSection.
CComMultiThreadModelNoCS ::CriticalSection CComFakeCriticalSectionClasse References .
CComMultiThreadModelNoCS ::ThreadModelNoCS CComMultiThreadModelNoCSClasse References .

Méthodes publiques

Nom Description
CComMultiThreadModelNoCS ::D ecrement (Statique) Décrémente la valeur de la variable spécifiée de manière thread-safe.
CComMultiThreadModelNoCS ::Increment (Statique) Incrémente la valeur de la variable spécifiée de manière thread-safe.

Notes

CComMultiThreadModelNoCS est similaire à CComMultiThreadModel dans lequel il fournit des méthodes thread-safe pour incrémenter et décrémenter une variable. Toutefois, lorsque vous référencez une classe de section critique par le biais CComMultiThreadModelNoCSde méthodes telles que Lock et Unlock ne feront rien.

En règle générale, vous utilisez CComMultiThreadModelNoCS le ThreadModelNoCS typedef nom. Cela typedef est défini dans CComMultiThreadModelNoCS, CComMultiThreadModelet CComSingleThreadModel.

Remarque

Les noms globaux typedef CComObjectThreadModel et CComGlobalsThreadModel ne font pas référenceCComMultiThreadModelNoCS.

En plus de ThreadModelNoCS, CComMultiThreadModelNoCS définit AutoCriticalSection et CriticalSection. Ces deux typedef derniers noms référencent CComFakeCriticalSection, qui fournit des méthodes vides associées à l’obtention et à la publication d’une section critique.

Spécifications

En-tête : atlbase.h

CComMultiThreadModelNoCS ::AutoCriticalSection

Lors de l’utilisationCComMultiThreadModelNoCS, le nom AutoCriticalSection fait référence à la typedef classe CComFakeCriticalSection.

typedef CComFakeCriticalSection AutoCriticalSection;

Notes

Étant donné que CComFakeCriticalSection ne fournit pas de section critique, ses méthodes ne font rien.

CComMultiThreadModel et CComSingleThreadModel contiennent également des définitions pour AutoCriticalSection. Le tableau suivant montre la relation entre la classe de modèle de threading et la classe de section critique référencée par AutoCriticalSection:

Classe définie dans Classe référencée
CComMultiThreadModelNoCS CComFakeCriticalSection
CComMultiThreadModel CComAutoCriticalSection
CComSingleThreadModel CComFakeCriticalSection

En plus de AutoCriticalSection, vous pouvez utiliser le typedef nom CriticalSection. Vous ne devez pas spécifier AutoCriticalSection dans les objets globaux ou les membres de classe statique si vous souhaitez éliminer le code de démarrage CRT.

Exemple

Voir CComMultiThreadModel ::AutoCriticalSection.

CComMultiThreadModelNoCS ::CriticalSection

Lors de l’utilisationCComMultiThreadModelNoCS, le nom CriticalSection fait référence à la typedef classe CComFakeCriticalSection.

typedef CComFakeCriticalSection CriticalSection;

Notes

Étant donné que CComFakeCriticalSection ne fournit pas de section critique, ses méthodes ne font rien.

CComMultiThreadModel et CComSingleThreadModel contiennent également des définitions pour CriticalSection. Le tableau suivant montre la relation entre la classe de modèle de threading et la classe de section critique référencée par CriticalSection:

Classe définie dans Classe référencée
CComMultiThreadModelNoCS CComFakeCriticalSection
CComMultiThreadModel CComCriticalSection
CComSingleThreadModel CComFakeCriticalSection

En plus CriticalSectionde , vous pouvez utiliser le typedef nom AutoCriticalSection. Vous ne devez pas spécifier AutoCriticalSection dans les objets globaux ou les membres de classe statique si vous souhaitez éliminer le code de démarrage CRT.

Exemple

Voir CComMultiThreadModel ::AutoCriticalSection.

CComMultiThreadModelNoCS ::D ecrement

Cette fonction statique appelle la fonction Win32 InterlockedDecrement, qui décrémente la valeur de la variable pointée par p.

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

Paramètres

p
[in] Pointeur vers la variable à décrémenter.

Valeur de retour

Si le résultat de la décrémentation est 0, Decrement retourne 0. Si le résultat du décrément est différent de zéro, la valeur de retour est également différente de zéro, mais peut ne pas être égale au résultat de la décrémentation.

Notes

InterlockedDecrement empêche plusieurs threads d’utiliser cette variable simultanément.

CComMultiThreadModelNoCS ::Increment

Cette fonction statique appelle la fonction Win32 InterlockedIncrement, qui incrémente la valeur de la variable pointée par p.

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

Paramètres

p
[in] Pointeur vers la variable à incrémenter.

Valeur de retour

Si le résultat de l’incrément est 0, Incrément retourne 0. Si le résultat de l’incrément est différent de zéro, la valeur de retour est également différente de zéro, mais peut ne pas être égale au résultat de l’incrément.

Notes

InterlockedIncrement empêche plusieurs threads d’utiliser cette variable simultanément.

CComMultiThreadModelNoCS ::ThreadModelNoCS

Lors de l’utilisation CComMultiThreadModelNoCS, le typedef nom ThreadModelNoCS fait simplement référence CComMultiThreadModelNoCS.

typedef CComMultiThreadModelNoCS ThreadModelNoCS;

Notes

CComMultiThreadModel et CComSingleThreadModel contiennent également des définitions pour ThreadModelNoCS. Le tableau suivant montre la relation entre la classe de modèle de threading et la classe référencée par ThreadModelNoCS:

Classe définie dans Classe référencée
CComMultiThreadModelNoCS CComMultiThreadModelNoCS
CComMultiThreadModel CComMultiThreadModelNoCS
CComSingleThreadModel CComSingleThreadModel

Notez que la définition de l’in ThreadModelNoCS CComMultiThreadModelNoCS fournit une symétrie avec CComMultiThreadModel et CComSingleThreadModel. Par exemple, supposons que l’exemple de code dans CComMultiThreadModel::AutoCriticalSection déclaré est le suivant typedef:

typedef typename ThreadModel::ThreadModelNoCS _ThreadModel;

Quelle que soit la classe spécifiée pour ThreadModel (par exemple CComMultiThreadModelNoCS), _ThreadModel résout en conséquence.

Exemple

Voir CComMultiThreadModel ::AutoCriticalSection.

Voir aussi

Vue d’ensemble de la classe