Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Esta interface fornece métodos para configurar um pool de threads.
Importante
Esta classe e os seus membros não podem ser usados em aplicações que sejam executadas no Windows Runtime.
Sintaxe
__interface
__declspec(uuid("B1F64757-6E88-4fa2-8886-7848B0D7E660")) IThreadPoolConfig : public IUnknown
Membros
Methods
| Nome | Description |
|---|---|
| GetSize | Chame este método para obter o número de threads no pool. |
| GetTimeout | Chame este método para obter o tempo máximo em milissegundos em que o pool de threads espera que um thread desligue. |
| SetSize | Chame este método para definir o número de threads no pool. |
| SetTimeout | Chame este método para definir o tempo máximo em milissegundos em que o pool de threads espera que um thread desligue. |
Observações
Esta interface é implementada pelo CThreadPool.
Requerimentos
Cabeçalho: atlutil.h
IThreadPoolConfig::GetSize
Chame este método para obter o número de threads no pool.
STDMETHOD(GetSize)(int* pnNumThreads);
Parâmetros
pnNumThreads
[fora] Endereço da variável que, em caso de sucesso, recebe o número de threads no pool.
Valor de retorno
Devolve S_OK em caso de sucesso, ou um erro HRESULT em caso de falha.
Example
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 este método para obter o tempo máximo em milissegundos em que o pool de threads espera que um thread desligue.
STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);
Parâmetros
pdwMaxWait
[fora] Endereço da variável que, em caso de sucesso, recebe o tempo máximo em milissegundos em que o pool de threads espera que um thread seja desligado.
Valor de retorno
Devolve S_OK em caso de sucesso, ou um erro HRESULT em caso de falha.
Example
Veja IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetSize
Chame este método para definir o número de threads no pool.
STDMETHOD(SetSize)int nNumThreads);
Parâmetros
nNumThreads
O número pedido de tópicos no pool.
Se o nNumThreads for negativo, o seu valor absoluto será multiplicado pelo número de processadores na máquina para obter o número total de threads.
Se nNumThreads for zero, ATLS_DEFAULT_THREADSPERPROC será multiplicado pelo número de processadores na máquina para obter o número total de threads.
Valor de retorno
Devolve S_OK em caso de sucesso, ou um erro HRESULT em caso de falha.
Example
Veja IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetTimeout
Chame este método para definir o tempo máximo em milissegundos em que o pool de threads espera que um thread desligue.
STDMETHOD(SetTimeout)(DWORD dwMaxWait);
Parâmetros
dwMaxWait
O tempo máximo solicitado em milissegundos em que o pool de threads espera que um thread desligue.
Valor de retorno
Devolve S_OK em caso de sucesso, ou um erro HRESULT em caso de falha.
Example
Veja IThreadPoolConfig::GetSize.