Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Библиотека активных шаблонов (ATL) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
Этот интерфейс предоставляет методы настройки пула потоков.
Внимание
Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.
Синтаксис
__interface
__declspec(uuid("B1F64757-6E88-4fa2-8886-7848B0D7E660")) IThreadPoolConfig : public IUnknown
Участники
Методы
| Имя | Описание |
|---|---|
| GetSize | Вызовите этот метод, чтобы получить количество потоков в пуле. |
| GetTimeout | Вызовите этот метод, чтобы получить максимальное время в миллисекундах, которое пул потоков будет ожидать завершения работы потока. |
| SetSize | Вызовите этот метод, чтобы задать количество потоков в пуле. |
| SetTimeout | Вызовите этот метод, чтобы задать максимальное время в миллисекундах, которое пул потоков будет ожидать завершения работы потока. |
Замечания
Этот интерфейс реализуется CThreadPool.
Требования
Заголовок: atlutil.h
IThreadPoolConfig::GetSize
Вызовите этот метод, чтобы получить количество потоков в пуле.
STDMETHOD(GetSize)(int* pnNumThreads);
Параметры
pnNumThreads
[out] Адрес переменной, которая при успешном выполнении получает количество потоков в пуле.
Возвращаемое значение
Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.
Пример
HRESULT DoPoolOperations(IThreadPoolConfig* pPool, int nSize)
{
int nCurrSize = 0;
HRESULT hr = pPool->GetSize(&nCurrSize);
if (SUCCEEDED(hr))
{
printf_s("Current pool size: %d\n", nCurrSize);
hr = pPool->SetSize(nSize);
if (SUCCEEDED(hr))
{
printf_s("New pool size : %d\n", nSize);
DWORD dwTimeout = 0;
hr = pPool->GetTimeout(&dwTimeout);
if (SUCCEEDED(hr))
{
printf_s("Current pool timeout: %u\n", dwTimeout);
// Increase timeout by 10 seconds.
dwTimeout += 10 * 1000;
hr = pPool->SetTimeout(dwTimeout);
if (SUCCEEDED(hr))
{
printf_s("New pool timeout: %u\n", dwTimeout);
}
else
{
printf_s("Failed to set pool timeout: 0x%08X\n", hr);
}
}
else
{
printf_s("Failed to get pool timeout: 0x%08X\n", hr);
}
}
else
{
printf_s("Failed to resize pool: 0x%08X\n", hr);
}
}
else
{
printf_s("Failed to get pool size: 0x%08x\n", hr);
}
return hr;
}
IThreadPoolConfig::GetTimeout
Вызовите этот метод, чтобы получить максимальное время в миллисекундах, которое пул потоков будет ожидать завершения работы потока.
STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);
Параметры
pdwMaxWait
[out] Адрес переменной, которая при успешном выполнении получает максимальное время в миллисекундах, которое пул потоков ожидает завершения работы потока.
Возвращаемое значение
Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.
Пример
См. раздел IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetSize
Вызовите этот метод, чтобы задать количество потоков в пуле.
STDMETHOD(SetSize)int nNumThreads);
Параметры
nNumThreads
Запрошенный номер потоков в пуле.
Если nNumThreads является отрицательным, его абсолютное значение будет умножено на число процессоров на компьютере, чтобы получить общее количество потоков.
Если nNumThreads равно нулю, ATLS_DEFAULT_THREADSPERPROC будет умножено на число процессоров на компьютере, чтобы получить общее количество потоков.
Возвращаемое значение
Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.
Пример
См. раздел IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetTimeout
Вызовите этот метод, чтобы задать максимальное время в миллисекундах, которое пул потоков будет ожидать завершения работы потока.
STDMETHOD(SetTimeout)(DWORD dwMaxWait);
Параметры
dwMaxWait
Запрошенное максимальное время в миллисекундах, которое пул потоков ожидает завершения работы потока.
Возвращаемое значение
Возвращает S_OK при успешном выполнении или ошибку HRESULT при сбое.
Пример
См. раздел IThreadPoolConfig::GetSize.