共用方式為


IThreadPoolConfig 介面

這個介面提供設定線程集區的方法。

重要

這個類別及其成員不能用於在 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]成功時接收集區中線程數目的變數位址。

傳回值

傳回成功時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]成功時,線程集區將等候線程關閉的最大時間,以毫秒為單位來接收變數位址。

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

範例

請參閱 IThreadPoolConfig::GetSize

IThreadPoolConfig::SetSize

呼叫此方法以設定集區中的線程數目。

STDMETHOD(SetSize)int nNumThreads);

參數

nNumThreads
集區中要求的線程數目。

如果 nNumThreads 為負數,其絕對值會乘以機器中的處理器數目,以取得線程總數。

如果 nNumThreads 為零,ATLS_DEFAULT_THREADSPERPROC將會乘以機器中的處理器數目,以取得線程總數。

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

範例

請參閱 IThreadPoolConfig::GetSize

IThreadPoolConfig::SetTimeout

呼叫這個方法,以毫秒為單位設定線程集區等候線程關閉的最大時間。

STDMETHOD(SetTimeout)(DWORD dwMaxWait);

參數

dwMaxWait
要求的最大時間,以毫秒為單位,線程集區會等待線程關閉。

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

範例

請參閱 IThreadPoolConfig::GetSize

另請參閱

類別
CThreadPool 類別