CComMultiThreadModel::AutoCriticalSection

element TypeDef CComAutoCriticalSection AutoCriticalSection;

Uwagi

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

CComSingleThreadModel i CComMultiThreadModelNoCS zawierają także definicje dla AutoCriticalSection. W poniższej tabeli przedstawiono relacje między klasę modelu wątków i odwołania klasy sekcji krytycznej przez AutoCriticalSection:

Klasa zdefiniowana w Klasa odwołania
CComMultiThreadModel CComCriticalSection
CComSingleThreadModel CComFakeCriticalSection
CComMultiThreadModelNoCS CComFakeCriticalSection

Oprócz AutoCriticalSectionmożna użyć nazwy elementu typedef CriticalSection. Należy nie określić AutoCriticalSection obiekty globalne lub elementów klas statycznych Jeśli chcesz wyeliminować kod uruchamiający CRT.

Przykład

Poniższy kod jest pobierana z CComObjectRootEx.

templatelt; Klasa ThreadModel >
Klasa CComObjectRootEx: CComObjectRootBase publicznych
{
publiczne:
   element TypeDef ThreadModel _ThreadModel;
   element TypeDef _ThreadModel::AutoCriticalSection _CritSec;

ULONG InternalAddRef)
   {
      ...
      Zwraca _ThreadModel::Increment(&m_dwRef);
   }
   ...
   Unieważnij Lock () {m_critsec.Blokada (); }
   ...

prywatne:
   _CritSec m_critsec;

}

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

ThreadModel = CComObjectThreadModel

Pojedyncze lub Apartament Wolne
InternalAddRef Przyrost nie jest bezpieczne wątek. Przyrost jest odławiany w wątku.
Zablokuj Does; nie ma żadnych sekcji krytycznej, aby zablokować. Sekcję krytyczną jest zablokowany.

ThreadModel = CComObjectThreadModel::ThreadModelNoCS

Pojedyncze lub Apartament Wolne
InternalAddRef Przyrost nie jest bezpieczne wątek. Przyrost jest odławiany w wątku.
Zablokuj Does; nie ma żadnych sekcji krytycznej, aby zablokować. Does; nie ma żadnych sekcji krytycznej, aby zablokować.

Omówie&nie CComMultiThreadModel |nbsp; Członkowie klasy

Zobacz teżnbsp;CComObjectThreadModel, CComGlobalsThreadModel, CComMultiThreadModel::ThreadModel&NoCS

Index