CComMultiThreadModel::AutoCriticalSection

typedef CComAutoCriticalSection AutoCriticalSection;

Osservazioni

Quando si utilizza CComMultiThreadModel, il nome di typedef AutoCriticalSection fa riferimento a classe CComAutoCriticalSection, che fornisce i metodi per ottenere e rilasciare le proprietā di un oggetto sezione critica.

CComSingleThreadModel e CComMultiThreadModelNoCS contengono anche le definizioni per AutoCriticalSection. La tabella seguente mostra la relazione tra la classe del modello di threading e riferimento alla sezione critica di classi da AutoCriticalSection:

Classe definita in Classe a cui fa riferimento
CComMultiThreadModel CComCriticalSection
CComSingleThreadModel CComFakeCriticalSection
CComMultiThreadModelNoCS CComFakeCriticalSection

Oltre a AutoCriticalSection, č possibile utilizzare il nome di typedef CriticalSection. AutoCriticalSection non deve specificare in oggetti globali o membri di classe statici se si desidera eliminare il codice di avvio CRT.

Esempio

Il codice seguente č tratto da CComObjectRootEx.

templatelt; classe ThreadModel >
classe CComObjectRootEx: pubblico CComObjectRootBase
{
pubblica:
   typedef ThreadModel _ThreadModel;
   typedef _ThreadModel::AutoCriticalSection _CritSec;

ULONG InternalAddRef)
   {
      ...
      return _ThreadModel::Increment(&m_dwRef);
   }
   ...
   void Lock () {m_critsec.Lock (); }
   ...

privato:
   _CritSec m_critsec;

}

Nelle tabelle seguenti mostrano i risultati dei metodi InternalAddRef e Lock , a seconda del parametro di template di ThreadModel e il modello di threading utilizzato dall'applicazione:

ThreadModel = CComObjectThreadModel

Singolo o appartamento Gratis
InternalAddRef L'incremento non č thread-safe. L'incremento č thread-safe.
Blocco Non fa nulla; esiste una sezione critica per bloccare. La sezione critica č bloccata.

ThreadModel = CComObjectThreadModel::ThreadModelNoCS

Singolo o appartamento Gratis
InternalAddRef L'incremento non č thread-safe. L'incremento č thread-safe.
Blocco Non fa nulla; esiste una sezione critica per bloccare. Non fa nulla; esiste una sezione critica per bloccare.

Pa&noramica CComMultiThreadModel |nbsp; Membri della classe

Vedere anchenbsp;CComObjectThreadModel, CComGlobalsThreadModel, CComMultiThreadModel::ThreadModel&NoCS

Index