IThreadPoolConfig-Schnittstelle

Diese Schnittstelle stellt Methoden zum Konfigurieren eines Threadpools bereit.

Wichtig

Diese Klasse und ihre Member können nicht in Anwendungen verwendet werden, die in der Windows-Runtime ausgeführt werden.

Syntax

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

Member

Methoden

Name Beschreibung
GetSize Rufen Sie diese Methode auf, um die Anzahl der Threads im Pool abzurufen.
GetTimeout Rufen Sie diese Methode auf, um die maximale Zeit in Millisekunden abzurufen, die der Threadpool auf das Herunterfahren eines Threads wartet.
SetSize Rufen Sie diese Methode auf, um die Anzahl der Threads im Pool festzulegen.
SetTimeout Rufen Sie diese Methode auf, um die maximale Zeit in Millisekunden festzulegen, die der Threadpool auf das Herunterfahren eines Threads wartet.

Hinweise

Diese Schnittstelle wird von CThreadPool implementiert.

Anforderungen

Header: atlutil.h

IThreadPoolConfig::GetSize

Rufen Sie diese Methode auf, um die Anzahl der Threads im Pool abzurufen.

STDMETHOD(GetSize)(int* pnNumThreads);

Parameter

pnNumThreads
[out] Adresse der Variablen, die bei Erfolg die Anzahl der Threads im Pool empfängt.

Rückgabewert

S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.

Beispiel

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

Rufen Sie diese Methode auf, um die maximale Zeit in Millisekunden abzurufen, die der Threadpool auf das Herunterfahren eines Threads wartet.

STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);

Parameter

pdwMaxWait
[out] Adresse der Variablen, die bei Erfolg die maximale Zeit in Millisekunden empfängt, die der Threadpool wartet, bis ein Thread heruntergefahren wird.

Rückgabewert

S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.

Beispiel

Siehe IThreadPoolConfig::GetSize.

IThreadPoolConfig::SetSize

Rufen Sie diese Methode auf, um die Anzahl der Threads im Pool festzulegen.

STDMETHOD(SetSize)int nNumThreads);

Parameter

nNumThreads
Die angeforderte Anzahl von Threads im Pool.

Wenn nNumThreads negativ ist, wird der absolute Wert mit der Anzahl der Prozessoren auf dem Computer multipliziert, um die Gesamtanzahl der Threads abzurufen.

Wenn nNumThreads null ist, wird ATLS_DEFAULT_THREADSPERPROC mit der Anzahl der Prozessoren auf dem Computer multipliziert, um die Gesamtanzahl der Threads abzurufen.

Rückgabewert

S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.

Beispiel

Siehe IThreadPoolConfig::GetSize.

IThreadPoolConfig::SetTimeout

Rufen Sie diese Methode auf, um die maximale Zeit in Millisekunden festzulegen, die der Threadpool auf das Herunterfahren eines Threads wartet.

STDMETHOD(SetTimeout)(DWORD dwMaxWait);

Parameter

dwMaxWait
Die angeforderte maximale Zeit in Millisekunden, die der Threadpool wartet, bis ein Thread heruntergefahren wird.

Rückgabewert

S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.

Beispiel

Siehe IThreadPoolConfig::GetSize.

Siehe auch

Klassen
CThreadPool-Klasse