Sdílet prostřednictvím


IThreadPoolConfig – rozhraní

Toto rozhraní poskytuje metody pro konfiguraci fondu vláken.

Důležité

Tuto třídu a její členy nelze použít v aplikacích, které se spouští v prostředí Windows Runtime.

Syntaxe

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

Členové

Metody

Název Popis
GetSize Voláním této metody získáte počet vláken ve fondu.
GetTimeout Voláním této metody získáte maximální dobu v milisekundách, kterou fond vláken počká, až se vlákno vypne.
Nastavení velikosti Voláním této metody nastavíte počet vláken ve fondu.
SetTimeout Voláním této metody nastavíte maximální dobu v milisekundách, po kterou bude fond vláken čekat, až se vlákno vypne.

Poznámky

Toto rozhraní je implementováno CThreadPool.

Požadavky

Hlavička: atlutil.h

IThreadPoolConfig::GetSize

Voláním této metody získáte počet vláken ve fondu.

STDMETHOD(GetSize)(int* pnNumThreads);

Parametry

pnNumThreads
[ven] Adresa proměnné, která při úspěchu obdrží počet vláken ve fondu.

Návratová hodnota

Vrátí S_OK při úspěchu nebo chybu HRESULT při selhání.

Příklad

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

Voláním této metody získáte maximální dobu v milisekundách, kterou fond vláken počká, až se vlákno vypne.

STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);

Parametry

pdwMaxWait
[ven] Adresa proměnné, která při úspěchu obdrží maximální dobu v milisekundách, po kterou fond vláken počká, než se vlákno vypne.

Návratová hodnota

Vrátí S_OK při úspěchu nebo chybu HRESULT při selhání.

Příklad

Viz IThreadPoolConfig::GetSize.

IThreadPoolConfig::SetSize

Voláním této metody nastavíte počet vláken ve fondu.

STDMETHOD(SetSize)int nNumThreads);

Parametry

nNumThreads
Požadovaný počet vláken ve fondu.

Pokud je argument nNumThreads záporný, jeho absolutní hodnota se vynásobí počtem procesorů v počítači, aby se získal celkový počet vláken.

Pokud je nNumThreads nula, ATLS_DEFAULT_THREADSPERPROC se vynásobí počtem procesorů v počítači, aby se získal celkový počet vláken.

Návratová hodnota

Vrátí S_OK při úspěchu nebo chybu HRESULT při selhání.

Příklad

Viz IThreadPoolConfig::GetSize.

IThreadPoolConfig::SetTimeout

Voláním této metody nastavíte maximální dobu v milisekundách, po kterou bude fond vláken čekat, až se vlákno vypne.

STDMETHOD(SetTimeout)(DWORD dwMaxWait);

Parametry

dwMaxWait
Požadovaná maximální doba v milisekundách, po kterou fond vláken počká, až se vlákno vypne.

Návratová hodnota

Vrátí S_OK při úspěchu nebo chybu HRESULT při selhání.

Příklad

Viz IThreadPoolConfig::GetSize.

Viz také

Třídy
CThreadPool – třída