Interfejs IThreadPoolConfig
Ten interfejs udostępnia metody konfigurowania puli wątków.
Ważne
Tej klasy i jej składowych nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.
Składnia
__interface
__declspec(uuid("B1F64757-6E88-4fa2-8886-7848B0D7E660")) IThreadPoolConfig : public IUnknown
Elementy członkowskie
Metody
Nazwa/nazwisko | opis |
---|---|
GetSize | Wywołaj tę metodę, aby uzyskać liczbę wątków w puli. |
GetTimeout | Wywołaj tę metodę, aby uzyskać maksymalny czas w milisekundach, który pula wątków będzie czekać na zamknięcie wątku. |
SetSize | Wywołaj tę metodę, aby ustawić liczbę wątków w puli. |
SetTimeout | Wywołaj tę metodę, aby ustawić maksymalny czas w milisekundach, który pula wątków będzie czekać na zamknięcie wątku. |
Uwagi
Ten interfejs jest implementowany przez CThreadPool.
Wymagania
Nagłówek: atlutil.h
IThreadPoolConfig::GetSize
Wywołaj tę metodę, aby uzyskać liczbę wątków w puli.
STDMETHOD(GetSize)(int* pnNumThreads);
Parametry
pnNumThreads
[out] Adres zmiennej, która w przypadku powodzenia otrzymuje liczbę wątków w puli.
Wartość zwracana
Zwraca S_OK powodzenia lub błąd HRESULT w przypadku niepowodzenia.
Przykład
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
Wywołaj tę metodę, aby uzyskać maksymalny czas w milisekundach, który pula wątków będzie czekać na zamknięcie wątku.
STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);
Parametry
pdwMaxWait
[out] Adres zmiennej, która po powodzeniu otrzymuje maksymalny czas w milisekundach, który pula wątków będzie czekać na zamknięcie wątku.
Wartość zwracana
Zwraca S_OK powodzenia lub błąd HRESULT w przypadku niepowodzenia.
Przykład
Zobacz IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetSize
Wywołaj tę metodę, aby ustawić liczbę wątków w puli.
STDMETHOD(SetSize)int nNumThreads);
Parametry
nNumThreads
Żądana liczba wątków w puli.
Jeśli nNumThreads jest ujemna , jego wartość bezwzględna zostanie pomnożona przez liczbę procesorów na maszynie w celu uzyskania całkowitej liczby wątków.
Jeśli nNumThreads ma wartość zero, ATLS_DEFAULT_THREADSPERPROC zostanie pomnożona przez liczbę procesorów na maszynie w celu uzyskania całkowitej liczby wątków.
Wartość zwracana
Zwraca S_OK powodzenia lub błąd HRESULT w przypadku niepowodzenia.
Przykład
Zobacz IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetTimeout
Wywołaj tę metodę, aby ustawić maksymalny czas w milisekundach, który pula wątków będzie czekać na zamknięcie wątku.
STDMETHOD(SetTimeout)(DWORD dwMaxWait);
Parametry
dwMaxWait
Żądany maksymalny czas w milisekundach, który pula wątków będzie czekać na zamknięcie wątku.
Wartość zwracana
Zwraca S_OK powodzenia lub błąd HRESULT w przypadku niepowodzenia.
Przykład
Zobacz IThreadPoolConfig::GetSize.