Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Библиотека активных шаблонов (ATL) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
Этот класс предоставляет методы для увеличения и уменьшения значения переменной.
Синтаксис
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 | Пн. |
CComGlobalsThreadModel |
S | Пн. | Пн. |
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.