다음을 통해 공유


IThreadPoolConfig 인터페이스

이 인터페이스는 스레드 풀을 구성하기 위한 메서드를 제공합니다.

Important

이 클래스와 해당 멤버는 Windows 런타임에서 실행되는 애플리케이션에서 사용할 수 없습니다.

구문

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

멤버

메서드

속성 설명
GetSize 이 메서드를 호출하여 풀의 스레드 수를 가져옵니다.
GetTimeout 스레드 풀이 스레드가 종료될 때까지 대기하는 최대 시간(밀리초)을 얻으려면 이 메서드를 호출합니다.
SetSize 이 메서드를 호출하여 풀의 스레드 수를 설정합니다.
SetTimeout 스레드 풀이 스레드가 종료될 때까지 대기하는 최대 시간(밀리초)을 설정하려면 이 메서드를 호출합니다.

설명

이 인터페이스는 CThreadPool에서 구현됩니다.

요구 사항

헤더: atlutil.h

IThreadPoolConfig::GetSize

이 메서드를 호출하여 풀의 스레드 수를 가져옵니다.

STDMETHOD(GetSize)(int* pnNumThreads);

매개 변수

pnNumThreads
[out] 성공 시 풀의 스레드 수를 수신하는 변수의 주소입니다.

Return Value

성공 시 S_OK를 반환하거나 실패 시 HRESULT 오류를 반환합니다.

예시

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

스레드 풀이 스레드가 종료될 때까지 대기하는 최대 시간(밀리초)을 얻으려면 이 메서드를 호출합니다.

STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);

매개 변수

pdwMaxWait
[out] 성공 시 스레드 풀이 스레드가 종료될 때까지 대기하는 최대 시간(밀리초)을 수신하는 변수의 주소입니다.

Return Value

성공 시 S_OK를 반환하거나 실패 시 HRESULT 오류를 반환합니다.

예시

IThreadPoolConfig::GetSize를 참조하세요.

IThreadPoolConfig::SetSize

이 메서드를 호출하여 풀의 스레드 수를 설정합니다.

STDMETHOD(SetSize)int nNumThreads);

매개 변수

nNumThreads
풀에서 요청된 스레드 수입니다.

nNumThreads가 음수이면 절대값에 컴퓨터의 프로세서 수를 곱하여 총 스레드 수를 가져옵니다.

nNumThreads가 0이면 ATLS_DEFAULT_THREADSPERPROC 컴퓨터의 프로세서 수를 곱하여 총 스레드 수를 가져옵니다.

Return Value

성공 시 S_OK를 반환하거나 실패 시 HRESULT 오류를 반환합니다.

예시

IThreadPoolConfig::GetSize를 참조하세요.

IThreadPoolConfig::SetTimeout

스레드 풀이 스레드가 종료될 때까지 대기하는 최대 시간(밀리초)을 설정하려면 이 메서드를 호출합니다.

STDMETHOD(SetTimeout)(DWORD dwMaxWait);

매개 변수

dwMaxWait
스레드 풀이 스레드가 종료될 때까지 대기하는 요청된 최대 시간(밀리초)입니다.

Return Value

성공 시 S_OK를 반환하거나 실패 시 HRESULT 오류를 반환합니다.

예시

IThreadPoolConfig::GetSize를 참조하세요.

참고 항목

클래스
CThreadPool 클래스