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 。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應