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」を参照してください。