Поделиться через


Класс CComSingleThreadModel

Этот класс предоставляет методы для увеличения и уменьшения значения переменной.

Синтаксис

class CComSingleThreadModel

Участники

Общедоступные определения типов

Имя Описание
CComSingleThreadModel::AutoCriticalSection Ссылается на класс CComFakeCriticalSection.
CComSingleThreadModel::CriticalSection Ссылается на класс CComFakeCriticalSection.
CComSingleThreadModel::ThreadModelNoCS Ссылки CComSingleThreadModel.

Открытые методы

Имя Описание
CComSingleThreadModel::D ecrement Уменьшает значение указанной переменной. Эта реализация не является потокобезопасной.
CComSingleThreadModel::Increment Увеличивает значение указанной переменной. Эта реализация не является потокобезопасной.

Замечания

CComSingleThreadModel предоставляет методы для увеличения и уменьшения значения переменной. В отличие от CComMultiThreadModel и CComMultiThreadModelNoCS, эти методы не являются потокобезопасными.

Как правило, используется CComSingleThreadModel один из двух typedef имен: CComObjectThreadModel или CComGlobalsThreadModel. Класс, на который ссылается каждый из них typedef , зависит от используемой модели потоков, как показано в следующей таблице:

typedef Модель однопотоковой Модель потоков квартиры Модель свободного потока
CComObjectThreadModel S S M
CComGlobalsThreadModel S M M

S= CComSingleThreadModel; M= CComMultiThreadModel

CComSingleThreadModel сам определяет три typedef имена. ThreadModelNoCS ссылки CComSingleThreadModel. AutoCriticalSection и CriticalSection ссылочный класс CComFakeCriticalSection, который предоставляет пустые методы, связанные с получением и освобождением владения критически важным разделом.

Требования

Заголовок: atlbase.h

CComSingleThreadModel::AutoCriticalSection

При использовании CComSingleThreadModeltypedef имя AutoCriticalSection ссылается на класс CComFakeCriticalSection.

typedef CComFakeCriticalSection AutoCriticalSection;

Замечания

Так как CComFakeCriticalSection не предоставляет критически важный раздел, его методы ничего не делают.

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

Класс, определенный в Класс, на который ссылается
CComSingleThreadModel CComFakeCriticalSection
CComMultiThreadModel CComAutoCriticalSection
CComMultiThreadModelNoCS CComFakeCriticalSection

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

Пример

См. раздел CComMultiThreadModel::AutoCriticalSection.

CComSingleThreadModel::CriticalSection

При использовании CComSingleThreadModeltypedef имя CriticalSection ссылается на класс CComFakeCriticalSection.

typedef CComFakeCriticalSection CriticalSection;

Замечания

Так как CComFakeCriticalSection не предоставляет критически важный раздел, его методы ничего не делают.

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

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

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

Пример

См. раздел CComMultiThreadModel::AutoCriticalSection.

CComSingleThreadModel::D ecrement

Эта статическую функцию уменьшает значение переменной, на которую указывает p.

static ULONG WINAPI Decrement(LPLONG p) throw();

Параметры

p
[in] Указатель на переменную для уменьшения.

Возвращаемое значение

Результат уменьшения.

CComSingleThreadModel::Increment

Эта статтическая функция увеличивает значение переменной, на которую указывает p.

static ULONG WINAPI Increment(LPLONG p) throw();

Параметры

p
[in] Указатель на переменную для увеличения.

Возвращаемое значение

Результат увеличения.

CComSingleThreadModel::ThreadModelNoCS

При использовании CComSingleThreadModeltypedef имя ThreadModelNoCS просто ссылаетсяCComSingleThreadModel.

typedef CComSingleThreadModel ThreadModelNoCS;

Замечания

CComMultiThreadModel и CComMultiThreadModelNoCS содержат определения ThreadModelNoCS. В следующей таблице показана связь между классом модели потоков и классом, ThreadModelNoCSна который ссылается:

Класс, определенный в Класс, на который ссылается
CComSingleThreadModel CComSingleThreadModel
CComMultiThreadModel CComMultiThreadModelNoCS
CComMultiThreadModelNoCS CComMultiThreadModelNoCS

Пример

См. раздел CComMultiThreadModel::AutoCriticalSection.

См. также

Общие сведения о классе