Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Библиотека активных шаблонов (ATL) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
По состоянию на ATL 7.0 устарело: CComAutoThreadModule дополнительные сведения см. в разделе "Классы модулей ATL".
Внимание
Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.
Синтаксис
template <class ThreadAllocator = CComSimpleThreadAllocator>
class CComAutoThreadModule : public CComModule
Параметры
ThreadAllocator
[in] Класс управляет выделением потоков. Значение по умолчанию — CComSimpleThreadAllocator.
Участники
Методы
| Function | Description |
|---|---|
| CreateInstance | Выбирает поток, а затем создает объект в связанной квартире. |
| GetDefaultThreads | (статический) Динамически вычисляет количество потоков для модуля на основе количества процессоров. |
| Init | Создает потоки модуля. |
| Заблокировать | Увеличивает число блокировок модуля и текущего потока. |
| Отпирать | Уменьшает количество блокировок модуля и текущего потока. |
Элементы данных
| Элемент данных | Description |
|---|---|
| dwThreadID | Содержит идентификатор текущего потока. |
| m_Allocator | Управляет выбором потока. |
| m_nThreads | Содержит количество потоков в модуле. |
| m_pApartments | Управляет квартирами модуля. |
Замечания
Примечание.
Этот класс устарел, заменяясь производными классами CAtlAutoThreadModule и CAtlModule. Приведенные ниже сведения используются для более ранних выпусков ATL.
CComAutoThreadModule является производным от CComModule для реализации пула потоков, com-сервера модели квартиры для EXEs и служб Windows.
CComAutoThreadModule использует CComApartment для управления квартирой для каждого потока в модуле.
Наследуйте модуль, когда CComAutoThreadModule требуется создать объекты в нескольких квартирах. Кроме того, необходимо включить макрос DECLARE_CLASSFACTORY_AUTO_THREAD в определение класса объекта, чтобы указать CComClassFactoryAutoThread в качестве фабрики классов.
По умолчанию COM-приложение ATL AppWizard (мастер проектов ATL в Visual Studio .NET) будет производным от модуля CComModule. Чтобы использовать CComAutoThreadModule, измените определение класса. Например:
class CMyModule :
public CComAutoThreadModule<CComSimpleThreadAllocator>
{
public:
LONG Unlock()
{
LONG l = CComAutoThreadModule<CComSimpleThreadAllocator>::Unlock();
if (l == 0)
PostThreadMessage(dwThreadID, WM_QUIT, 0, 0);
return l;
}
DWORD dwThreadID;
};
Иерархия наследования
IAtlAutoThreadModule
CComAutoThreadModule
Требования
Заголовок: atlbase.h
CComAutoThreadModule::CreateInstance
По состоянию на ATL 7.0 устарело: CComAutoThreadModule дополнительные сведения см. в разделе "Классы модулей ATL".
HRESULT CreateInstance(
void* pfnCreateInstance,
REFIID riid,
void** ppvObj);
Параметры
pfnCreateInstance
[in] Указатель на функцию создателя.
riid
[in] IID запрошенного интерфейса.
ppvObj
[out] Указатель на указатель интерфейса, определяемый идентификатором riid. Если объект не поддерживает этот интерфейс, ppvObj имеет значение NULL.
Возвращаемое значение
Стандартное значение HRESULT.
Замечания
Выбирает поток, а затем создает объект в связанной квартире.
CComAutoThreadModule::d wThreadID
По состоянию на ATL 7.0 устарело: CComAutoThreadModule дополнительные сведения см. в разделе "Классы модулей ATL".
DWORD dwThreadID;
Замечания
Содержит идентификатор текущего потока.
CComAutoThreadModule::GetDefaultThreadThreads
По состоянию на ATL 7.0 устарело: CComAutoThreadModule дополнительные сведения см. в разделе "Классы модулей ATL".
static int GetDefaultThreads();
Возвращаемое значение
Количество потоков, создаваемых в модуле EXE.
Замечания
Эта статическую функцию динамически вычисляет максимальное количество потоков для модуля EXE на основе числа процессоров. По умолчанию это возвращаемое значение передается методу Init для создания потоков.
CComAutoThreadModule::Init
По состоянию на ATL 7.0 устарело: CComAutoThreadModule дополнительные сведения см. в разделе "Классы модулей ATL".
HRESULT Init(
_ATL_OBJMAP_ENTRY* p,
HINSTANCE h,
const GUID* plibid = NULL,
int nThreads = GetDefaultThreads());
Параметры
p
[in] Указатель на массив записей карты объектов.
ч
[in] HINSTANCE, переданный DLLMain или WinMain.
plibid
[in] Указатель на LIBID библиотеки типов, связанной с проектом.
nThreads
[in] Количество создаваемых потоков. По умолчанию nThreads — это значение, возвращаемое GetDefaultThreads.
Замечания
Инициализирует элементы данных и создает количество потоков, указанных nThreads.
CComAutoThreadModule::Lock
По состоянию на ATL 7.0 устарело: CComAutoThreadModule дополнительные сведения см. в разделе "Классы модулей ATL".
LONG Lock();
Возвращаемое значение
Значение, которое может быть полезно для диагностика или тестирования.
Замечания
Выполняет атомарное увеличение количества блокировок для модуля и текущего потока.
CComAutoThreadModule использует счетчик блокировки модуля, чтобы определить, обращаются ли клиенты к модулю. Число блокировок текущего потока используется для статистических целей.
CComAutoThreadModule::m_Allocator
По состоянию на ATL 7.0 устарело: CComAutoThreadModule дополнительные сведения см. в разделе "Классы модулей ATL".
ThreadAllocator m_Allocator;
Замечания
Объект, управляя выделением потоков. По умолчанию ThreadAllocator параметр шаблона класса — CComSimpleThreadAllocator.
CComAutoThreadModule::m_nThreads
По состоянию на ATL 7.0 устарело: CComAutoThreadModule дополнительные сведения см. в разделе "Классы модулей ATL".
int m_nThreads;
Замечания
Содержит количество потоков в модуле EXE. При m_nThreads задается значение параметра nThreads. Связанная с каждым потоком квартира управляется объектом CComApartment .
CComAutoThreadModule::m_pApartments
По состоянию на ATL 7.0 устарело: CComAutoThreadModule дополнительные сведения см. в разделе "Классы модулей ATL".
CComApartment* m_pApartments;
Замечания
Указывает на массив объектов CComApartment , каждый из которых управляет квартирой в модуле. Количество элементов в массиве основано на элементе m_nThreads .
CComAutoThreadModule::Unlock
По состоянию на ATL 7.0 устарело: CComAutoThreadModule дополнительные сведения см. в разделе "Классы модулей ATL".
LONG Unlock();
Возвращаемое значение
Значение, которое может быть полезно для диагностика или тестирования.
Замечания
Выполняет атомарное уменьшение количества блокировок для модуля и текущего потока.
CComAutoThreadModule использует счетчик блокировки модуля, чтобы определить, обращаются ли клиенты к модулю. Число блокировок текущего потока используется для статистических целей.
Когда число блокировок модуля достигает нуля, модуль можно выгрузить.