Delen via


IThreadPoolConfig-interface

Opmerking

De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Deze interface biedt methoden voor het configureren van een threadpool.

Belangrijk

Deze klasse en de bijbehorende leden kunnen niet worden gebruikt in toepassingen die worden uitgevoerd in Windows Runtime.

Syntaxis

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

Leden

Methods

Naam Description
GetSize Roep deze methode aan om het aantal threads in de pool op te halen.
GetTimeout Roep deze methode aan om de maximale tijd in milliseconden te krijgen die de threadgroep wacht totdat een thread is afgesloten.
SetSize Roep deze methode aan om het aantal threads in de pool in te stellen.
SetTimeout Roep deze methode aan om de maximale tijd in milliseconden in te stellen die de threadgroep wacht tot een thread is afgesloten.

Opmerkingen

Deze interface wordt geïmplementeerd door CThreadPool.

Requirements

Header: atlutil.h

IThreadPoolConfig::GetSize

Roep deze methode aan om het aantal threads in de pool op te halen.

STDMETHOD(GetSize)(int* pnNumThreads);

Parameterwaarden

pnNumThreads
[uit] Adres van de variabele die bij succes het aantal threads in de pool ontvangt.

Retourwaarde

Retourneert S_OK bij succes of een fout HRESULT bij fout.

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

Roep deze methode aan om de maximale tijd in milliseconden te krijgen die de threadgroep wacht totdat een thread is afgesloten.

STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);

Parameterwaarden

pdwMaxWait
[uit] Adres van de variabele die, bij succes, de maximale tijd ontvangt in milliseconden dat de threadgroep wacht tot een thread is afgesloten.

Retourwaarde

Retourneert S_OK bij succes of een fout HRESULT bij fout.

Example

Zie IThreadPoolConfig::GetSize.

IThreadPoolConfig::SetSize

Roep deze methode aan om het aantal threads in de pool in te stellen.

STDMETHOD(SetSize)int nNumThreads);

Parameterwaarden

nNumThreads
Het aangevraagde aantal threads in de pool.

Als nNumThreads negatief is, wordt de absolute waarde vermenigvuldigd met het aantal processors in de machine om het totale aantal threads op te halen.

Als nNumThreads nul is, wordt ATLS_DEFAULT_THREADSPERPROC vermenigvuldigd met het aantal processors op de computer om het totale aantal threads op te halen.

Retourwaarde

Retourneert S_OK bij succes of een fout HRESULT bij fout.

Example

Zie IThreadPoolConfig::GetSize.

IThreadPoolConfig::SetTimeout

Roep deze methode aan om de maximale tijd in milliseconden in te stellen die de threadgroep wacht tot een thread is afgesloten.

STDMETHOD(SetTimeout)(DWORD dwMaxWait);

Parameterwaarden

dwMaxWait
De aangevraagde maximale tijd in milliseconden dat de threadpool wacht tot een thread is afgesloten.

Retourwaarde

Retourneert S_OK bij succes of een fout HRESULT bij fout.

Example

Zie IThreadPoolConfig::GetSize.

Zie ook

Klassen
CThreadPool-klasse