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