IThreadPoolConfig Interface
Essa interface fornece métodos para configurar um pool de threads.
Importante
Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.
Sintaxe
__interface
__declspec(uuid("B1F64757-6E88-4fa2-8886-7848B0D7E660")) IThreadPoolConfig : public IUnknown
Membros
Métodos
Nome | Descrição |
---|---|
GetSize | Chame esse método para obter o número de threads no pool. |
GetTimeout | Chame esse método para obter o tempo máximo em milissegundos que o pool de threads aguardará o desligamento de um thread. |
SetSize | Chame esse método para definir o número de threads no pool. |
SetTimeout | Chame esse método para definir o tempo máximo em milissegundos que o pool de threads aguardará para que um thread seja desligado. |
Comentários
Essa interface é implementada por CThreadPool.
Requisitos
Cabeçalho: atlutil.h
IThreadPoolConfig::GetSize
Chame esse método para obter o número de threads no pool.
STDMETHOD(GetSize)(int* pnNumThreads);
Parâmetros
pnNumThreads
[out] Endereço da variável que receberá o número de threads do pool, em caso de êxito.
Valor de retorno
Retornará S_OK se houver êxito ou um erro HRESULT, em caso de falha.
Exemplo
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
Chame esse método para obter o tempo máximo em milissegundos que o pool de threads aguardará o desligamento de um thread.
STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);
Parâmetros
pdwMaxWait
[out] Endereço da variável que receberá o tempo máximo em milissegundos que o pool de threads aguardará para que um thread seja desligado, em caso de êxito.
Valor de retorno
Retornará S_OK se houver êxito ou um erro HRESULT, em caso de falha.
Exemplo
Consulte IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetSize
Chame esse método para definir o número de threads no pool.
STDMETHOD(SetSize)int nNumThreads);
Parâmetros
nNumThreads
O número solicitado de threads no pool.
Se nNumThreads for negativo, o valor absoluto será multiplicado pelo número de processadores no computador para obter o número total de threads.
Se nNumThreads for zero, ATLS_DEFAULT_THREADSPERPROC será multiplicado pelo número de processadores no computador para obter o número total de threads.
Valor de retorno
Retornará S_OK se houver êxito ou um erro HRESULT, em caso de falha.
Exemplo
Consulte IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetTimeout
Chame esse método para definir o tempo máximo em milissegundos que o pool de threads aguardará para que um thread seja desligado.
STDMETHOD(SetTimeout)(DWORD dwMaxWait);
Parâmetros
dwMaxWait
O tempo máximo solicitado em milissegundos que o pool de threads aguardará para que um thread seja desligado.
Valor de retorno
Retornará S_OK se houver êxito ou um erro HRESULT, em caso de falha.
Exemplo
Consulte IThreadPoolConfig::GetSize.