CComMultiThreadModel::AutoCriticalSection

typedef CComAutoCriticalSection AutoCriticalSection;

Примечания

При использовании CComMultiThreadModel, имя typedef AutoCriticalSection ссылается на класс CComAutoCriticalSection, который предоставляет методы для получения и освобождения критической секции объекта.

CComSingleThreadModel и CComMultiThreadModelNoCS также содержат определения для AutoCriticalSection. В следующей таблице показаны отношения между потоковой модели класса и критической секции класса ссылку на AutoCriticalSection:

Класс, определенный в Ссылка на класс
CComMultiThreadModel CComCriticalSection
CComSingleThreadModel CComFakeCriticalSection
CComMultiThreadModelNoCS CComFakeCriticalSection

В дополнение к AutoCriticalSectionможно использовать имя typedef CriticalSection. Не следует указывать AutoCriticalSection в глобальных объектов или членам статических классов, если вы хотите исключить код запуска CRT.

Пример

Следующий код берется из CComObjectRootEx.

templatelt; класс ThreadModel >
класс CComObjectRootEx: государственные CComObjectRootBase
{
общественности:
   typedef ThreadModel _ThreadModel;
   typedef _ThreadModel::AutoCriticalSection _CritSec;

ULONG (InternalAddRef)
   {
      ...
      возвращение _ThreadModel::Increment(&m_dwRef);
   }
   ...
   аннулировать (блокировка) {m_critsec.Замок (); }
   ...

частные:
   _CritSec m_critsec;

}

В следующих таблицах показаны результаты InternalAddRef и Блокировка методов, в зависимости от параметра шаблона ThreadModel и потоковая модель, используемая приложением:

ThreadModel = CComObjectThreadModel

Одно - или квартиры Свободный
InternalAddRef Увеличение не является поточно ориентированной. Приращение является поточно ориентированной.
Замок Не делает ничего; нет никаких критическую секцию для блокировки. Критический раздел заблокирован.

ThreadModel = CComObjectThreadModel::ThreadModelNoCS

Одно - или квартиры Свободный
InternalAddRef Увеличение не является поточно ориентированной. Приращение является поточно ориентированной.
Замок Не делает ничего; нет никаких критическую секцию для блокировки. Не делает ничего; нет никаких критическую секцию для блокировки.

Обзор CComMultiThreadModelЧлены класса

См. такжеnbsp;CComObjectThreadModel, CComGlobalsThreadModel, CComMultiThreadModel::ThreadModel&NoCS

Index