Sdílet prostřednictvím


CComMultiThreadModel::AutoCriticalSection

Při použití CComMultiThreadModel , typedef název AutoCriticalSection odkazuje na třídu CComAutoCriticalSection, který poskytuje metody pro získání a uvolnění vlastnictví objektu kritický oddíl.

typedef CComAutoCriticalSection AutoCriticalSection;

Poznámky

CComSingleThreadModel a CComMultiThreadModelNoCS také obsahují definice pro AutoCriticalSection .Následující tabulka zobrazuje vztah mezi podprocesů třídy modelu a kritické části odkazuje AutoCriticalSection :

Třídy definované v

Třída odkazuje

CComMultiThreadModel

CComCriticalSection

CComSingleThreadModel

CComFakeCriticalSection

CComMultiThreadModelNoCS

CComFakeCriticalSection

Kromě AutoCriticalSection , můžete použít typedef název CriticalSection.Neměli byste zadávat AutoCriticalSection v globální objekty nebo členy statických tříd, pokud chcete eliminovat CRT spouštěcí kód.

Příklad

Následující kód je modelovat po CComObjectRootExa AutoCriticalSection v podprocesu prostředí.

template< class ThreadModel >
class CMyAutoCritClass
{
public:
   typedef ThreadModel _ThreadModel;
   typedef typename _ThreadModel::AutoCriticalSection _CritSec;

   CMyAutoCritClass() : m_dwRef(0) {}

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

private:
   _CritSec m_critsec;
   LONG m_dwRef;
};

Následující tabulky popisují výsledky InternalAddRef a Lock metod v závislosti na ThreadModel parametr šablony a aplikace používá model podprocesu:

ThreadModel = CComObjectThreadModel

Metoda

Single nebo podprocesový model Apartment

Volné zřetězení

InternalAddRef

Přírůstek není podprocesu.

Přírůstek je podprocesu.

Lock

Neprovede žádnou akci; neexistuje kritický oddíl zamknout.

Kritické sekce je uzamčena.

ThreadModel = CComObjectThreadModel::ThreadModelNoCS

Metoda

Single nebo podprocesový model Apartment

Volné zřetězení

InternalAddRef

Přírůstek není podprocesu.

Přírůstek je podprocesu.

Lock

Neprovede žádnou akci; neexistuje kritický oddíl zamknout.

Neprovede žádnou akci; neexistuje kritický oddíl zamknout.

Požadavky

Záhlaví: atlbase.h

Viz také

Referenční dokumentace

Třída CComMultiThreadModel

CComObjectThreadModel

CComGlobalsThreadModel

CComMultiThreadModel::ThreadModelNoCS