Condividi tramite


Interfaccia IThreadPoolConfig

Questa interfaccia fornisce metodi per la configurazione di un pool di thread.

Importante

Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.

Sintassi

__interface
    __declspec(uuid("B1F64757-6E88-4fa2-8886-7848B0D7E660")) IThreadPoolConfig : public IUnknown

Membri

Metodi

Nome Descrizione
GetSize Chiamare questo metodo per ottenere il numero di thread nel pool.
GetTimeout Chiamare questo metodo per ottenere il tempo massimo in millisecondi in cui il pool di thread attenderà l'arresto di un thread.
SetSize Chiamare questo metodo per impostare il numero di thread nel pool.
SetTimeout Chiamare questo metodo per impostare il tempo massimo in millisecondi in cui il pool di thread attenderà l'arresto di un thread.

Osservazioni:

Questa interfaccia viene implementata da CThreadPool.

Requisiti

Intestazione: atlutil.h

IThreadPoolConfig::GetSize

Chiamare questo metodo per ottenere il numero di thread nel pool.

STDMETHOD(GetSize)(int* pnNumThreads);

Parametri

pnNumThreads
[out] Indirizzo della variabile che, in caso di esito positivo, riceve il numero di thread nel pool.

Valore restituito

Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.

Esempio

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

Chiamare questo metodo per ottenere il tempo massimo in millisecondi in cui il pool di thread attenderà l'arresto di un thread.

STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);

Parametri

pdwMaxWait
[out] L'indirizzo della variabile che, in caso di esito positivo, riceve il tempo massimo in millisecondi in cui il pool di thread attenderà l'arresto di un thread.

Valore restituito

Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.

Esempio

Vedere IThreadPoolConfig::GetSize.

IThreadPoolConfig::SetSize

Chiamare questo metodo per impostare il numero di thread nel pool.

STDMETHOD(SetSize)int nNumThreads);

Parametri

nNumThreads
Numero richiesto di thread nel pool.

Se nNumThreads è negativo, il relativo valore assoluto verrà moltiplicato per il numero di processori nel computer per ottenere il numero totale di thread.

Se nNumThreads è zero, ATLS_DEFAULT_THREADSPERPROC verrà moltiplicato per il numero di processori nel computer per ottenere il numero totale di thread.

Valore restituito

Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.

Esempio

Vedere IThreadPoolConfig::GetSize.

IThreadPoolConfig::SetTimeout

Chiamare questo metodo per impostare il tempo massimo in millisecondi in cui il pool di thread attenderà l'arresto di un thread.

STDMETHOD(SetTimeout)(DWORD dwMaxWait);

Parametri

dwMaxWait
Tempo massimo richiesto in millisecondi in cui il pool di thread attenderà l'arresto di un thread.

Valore restituito

Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.

Esempio

Vedere IThreadPoolConfig::GetSize.

Vedi anche

Classi
Classe CThreadPool