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 | CComFakeCriticalSection Classe References . |
CComMultiThreadModelNoCS ::ThreadModelNoCS | CComMultiThreadModelNoCS Classe 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 CComMultiThreadModelNoCS
de 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
, CComMultiThreadModel
et 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 CriticalSection
de , 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.