次の方法で共有


IThreadPoolConfig インターフェイス

このインターフェイスは、スレッド プールを構成するためのメソッドを提供します。

重要

このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。

構文

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

メンバー

メソッド

Name 説明
GetSize プール内のスレッドの数を取得するには、このメソッドを呼び出します。
GetTimeout スレッド プールがスレッドのシャットダウンを待機する最大時間 (ミリ秒) を取得するには、このメソッドを呼び出します。
SetSize プール内のスレッドの数を設定するには、このメソッドを呼び出します。
SetTimeout スレッド プールがスレッドのシャットダウンを待機する最大時間 (ミリ秒) を設定するには、このメソッドを呼び出します。

解説

このインターフェイスは、CThreadPool によって実装されます。

要件

ヘッダー: atlutil.h

IThreadPoolConfig::GetSize

プール内のスレッドの数を取得するには、このメソッドを呼び出します。

STDMETHOD(GetSize)(int* pnNumThreads);

パラメーター

pnNumThreads
[出力] 成功した場合、プール内のスレッドの数を受け取る変数のアドレス。

戻り値

成功した場合は 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
[出力] 成功した場合、スレッド プールがスレッドのシャットダウンを待機する最大時間 (ミリ秒) を受け取る変数のアドレス。

戻り値

成功した場合は S_OK、失敗した場合はエラー HRESULT を返します。

IThreadPoolConfig::GetSize」を参照してください。

IThreadPoolConfig::SetSize

プール内のスレッドの数を設定するには、このメソッドを呼び出します。

STDMETHOD(SetSize)int nNumThreads);

パラメーター

nNumThreads
プール内の要求されたスレッド数。

nNumThreads が負の場合、その絶対値にマシン内のプロセッサの数が乗算され、スレッドの総数が取得されます。

nNumThreads が 0 の場合、ATLS_DEFAULT_THREADSPERPROC にマシン内のプロセッサの数が乗算され、スレッドの総数が取得されます。

戻り値

成功した場合は S_OK、失敗した場合はエラー HRESULT を返します。

IThreadPoolConfig::GetSize」を参照してください。

IThreadPoolConfig::SetTimeout

スレッド プールがスレッドのシャットダウンを待機する最大時間 (ミリ秒) を設定するには、このメソッドを呼び出します。

STDMETHOD(SetTimeout)(DWORD dwMaxWait);

パラメーター

dwMaxWait
スレッド プールがスレッドのシャットダウンを待機する要求された最大時間 (ミリ秒単位)。

戻り値

成功した場合は S_OK、失敗した場合はエラー HRESULT を返します。

IThreadPoolConfig::GetSize」を参照してください。

関連項目

クラス
CThreadPool クラス