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