Partilhar via


IThreadPoolConfig Interface

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.

Consulte também

Classes
Classe CThreadPool