CComMultiThreadModel::AutoCriticalSection

typeDef CComAutoCriticalSection AutoCriticalSection;

Remarques

Lorsque vous utilisez CComMultiThreadModel, le nom de typedef AutoCriticalSection références de classe CComAutoCriticalSection, qui fournit des méthodes permettant d'obtenir et de libérer la propriété d'un objet section critique.

CComSingleThreadModel et CComMultiThreadModelNoCS contiennent aussi des définitions pour les AutoCriticalSection. Le tableau suivant montre la relation entre la classe thread du modèle et la référence de classe de section critique par AutoCriticalSection:

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

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

Exemple

Le code suivant est tiré de CComObjectRootEx.

templatelt ; ThreadModel de la classe >
Class CComObjectRootEx : public CComObjectRootBase
{
public :
   TypeDef ThreadModel _ThreadModel ;
   TypeDef _ThreadModel::AutoCriticalSection _CritSec ;

ULONG InternalAddRef)
   {
      ...
      Return _ThreadModel::Increment(&m_dwRef) ;
   }
   ...
   VOID Lock () {m_critsec.Verrou () ; }
   ...

privé :
   _CritSec m_critsec ;

}

Les tableaux suivants montrent les résultats des méthodes InternalAddRef et serrure , selon le paramètre de modèle de ThreadModel et le modèle de thread utilisé par l'application:

ThreadModel = CComObjectThreadModel

Seul ou en appartement Gratuit
InternalAddRef L'accroissement n'est pas thread-safe. L'incrément est thread-safe.
Verrou Ne fait rien ; Il n'y a pas de section critique pour verrouiller. La section critique est verrouillée.

ThreadModel = CComObjectThreadModel::ThreadModelNoCS

Seul ou en appartement Gratuit
InternalAddRef L'accroissement n'est pas thread-safe. L'incrément est thread-safe.
Verrou Ne fait rien ; Il n'y a pas de section critique pour verrouiller. Ne fait rien ; Il n'y a pas de section critique pour verrouiller.

Aperçu CComMultiThreadModel |  ; Membres de classe

Voir aussinbsp ;CComObjectThreadModel, CComGlobalsThreadModel, CComMultiThreadModel::ThreadModel&NoCS

Index