Udostępnij za pośrednictwem


CComMultiThreadModel::AutoCriticalSection

Podczas korzystania z CComMultiThreadModel, typedef nazwa AutoCriticalSection odwołuje się do klasy CComAutoCriticalSection, który zapewnia metody uzyskiwania i zwalnianie własności obiektu sekcji krytycznej.

typedef CComAutoCriticalSection AutoCriticalSection;

Uwagi

CComSingleThreadModel i CComMultiThreadModelNoCS zawierają również definicje dla AutoCriticalSection.W następującej tabeli pokazano relację między klasy modelu wątkowości i klasy sekcji krytycznej przez AutoCriticalSection:

Klasy zdefiniowane w

Odwołanie do klasy

CComMultiThreadModel

CComCriticalSection

CComSingleThreadModel

CComFakeCriticalSection

CComMultiThreadModelNoCS

CComFakeCriticalSection

Dodatkowo do AutoCriticalSection, można użyć typedef nazwa CriticalSection.Nie należy określać AutoCriticalSection obiekty globalne lub elementów klas statycznych, aby wyeliminować kod startowy CRT.

Przykład

Poniższy kod jest modelowana po CComObjectRootExi demonstruje AutoCriticalSection używany w środowisku wątków.

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;
};

W poniższych tabelach przedstawiono wyniki InternalAddRef i Lock metod, w zależności od ThreadModel parametr szablonu i model wątka używany przez aplikację:

ThreadModel = CComObjectThreadModel

Metoda

Pojedyncza lub wątkowość komórkowa

Wolnych wątków

InternalAddRef

Przyrost nie jest bezpieczne wątek.

Przyrost jest wielowątkowość.

Lock

Nie działają; nie ma sekcji krytycznej zablokować.

Sekcja krytyczna jest zablokowany.

ThreadModel = CComObjectThreadModel::ThreadModelNoCS

Metoda

Pojedyncza lub wątkowość komórkowa

Wolnych wątków

InternalAddRef

Przyrost nie jest bezpieczne wątek.

Przyrost jest wielowątkowość.

Lock

Nie działają; nie ma sekcji krytycznej zablokować.

Nie działają; nie ma sekcji krytycznej zablokować.

Wymagania

Nagłówek: atlbase.h

Zobacz też

Informacje

Klasa CComMultiThreadModel

CComObjectThreadModel

CComGlobalsThreadModel

CComMultiThreadModel::ThreadModelNoCS