CComMultiThreadModel::AutoCriticalSection

typedef CComAutoCriticalSection AutoCriticalSection;

Зауваження

При використанні CComMultiThreadModel, ім'я typedef AutoCriticalSection посилання класу CComAutoCriticalSection, яка надає методи для отримання і звільнення власності критичної секції об'єкта.

CComSingleThreadModel і CComMultiThreadModelNoCS також містять визначення для AutoCriticalSection. У нижченаведеній таблиці показано зв'язок між threading модель класу і класу критичної секції посилання на 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