Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.