IThreadPoolConfig – rozhraní
Toto rozhraní poskytuje metody pro konfiguraci fondu vláken.
Důležité
Tuto třídu a její členy nelze použít v aplikacích, které se spouští v prostředí Windows Runtime.
Syntaxe
__interface
__declspec(uuid("B1F64757-6E88-4fa2-8886-7848B0D7E660")) IThreadPoolConfig : public IUnknown
Členové
Metody
Název | Popis |
---|---|
GetSize | Voláním této metody získáte počet vláken ve fondu. |
GetTimeout | Voláním této metody získáte maximální dobu v milisekundách, kterou fond vláken počká, až se vlákno vypne. |
Nastavení velikosti | Voláním této metody nastavíte počet vláken ve fondu. |
SetTimeout | Voláním této metody nastavíte maximální dobu v milisekundách, po kterou bude fond vláken čekat, až se vlákno vypne. |
Poznámky
Toto rozhraní je implementováno CThreadPool.
Požadavky
Hlavička: atlutil.h
IThreadPoolConfig::GetSize
Voláním této metody získáte počet vláken ve fondu.
STDMETHOD(GetSize)(int* pnNumThreads);
Parametry
pnNumThreads
[ven] Adresa proměnné, která při úspěchu obdrží počet vláken ve fondu.
Návratová hodnota
Vrátí S_OK při úspěchu nebo chybu HRESULT při selhání.
Příklad
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
Voláním této metody získáte maximální dobu v milisekundách, kterou fond vláken počká, až se vlákno vypne.
STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);
Parametry
pdwMaxWait
[ven] Adresa proměnné, která při úspěchu obdrží maximální dobu v milisekundách, po kterou fond vláken počká, než se vlákno vypne.
Návratová hodnota
Vrátí S_OK při úspěchu nebo chybu HRESULT při selhání.
Příklad
Viz IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetSize
Voláním této metody nastavíte počet vláken ve fondu.
STDMETHOD(SetSize)int nNumThreads);
Parametry
nNumThreads
Požadovaný počet vláken ve fondu.
Pokud je argument nNumThreads záporný, jeho absolutní hodnota se vynásobí počtem procesorů v počítači, aby se získal celkový počet vláken.
Pokud je nNumThreads nula, ATLS_DEFAULT_THREADSPERPROC se vynásobí počtem procesorů v počítači, aby se získal celkový počet vláken.
Návratová hodnota
Vrátí S_OK při úspěchu nebo chybu HRESULT při selhání.
Příklad
Viz IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetTimeout
Voláním této metody nastavíte maximální dobu v milisekundách, po kterou bude fond vláken čekat, až se vlákno vypne.
STDMETHOD(SetTimeout)(DWORD dwMaxWait);
Parametry
dwMaxWait
Požadovaná maximální doba v milisekundách, po kterou fond vláken počká, až se vlákno vypne.
Návratová hodnota
Vrátí S_OK při úspěchu nebo chybu HRESULT při selhání.
Příklad
Viz IThreadPoolConfig::GetSize.