Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.