IThreadPoolConfig-Schnittstelle
Diese Schnittstelle stellt Methoden zum Konfigurieren eines Threadpools bereit.
Wichtig
Diese Klasse und ihre Member können nicht in Anwendungen verwendet werden, die in der Windows-Runtime ausgeführt werden.
Syntax
__interface
__declspec(uuid("B1F64757-6E88-4fa2-8886-7848B0D7E660")) IThreadPoolConfig : public IUnknown
Member
Methoden
Name | Beschreibung |
---|---|
GetSize | Rufen Sie diese Methode auf, um die Anzahl der Threads im Pool abzurufen. |
GetTimeout | Rufen Sie diese Methode auf, um die maximale Zeit in Millisekunden abzurufen, die der Threadpool auf das Herunterfahren eines Threads wartet. |
SetSize | Rufen Sie diese Methode auf, um die Anzahl der Threads im Pool festzulegen. |
SetTimeout | Rufen Sie diese Methode auf, um die maximale Zeit in Millisekunden festzulegen, die der Threadpool auf das Herunterfahren eines Threads wartet. |
Hinweise
Diese Schnittstelle wird von CThreadPool implementiert.
Anforderungen
Header: atlutil.h
IThreadPoolConfig::GetSize
Rufen Sie diese Methode auf, um die Anzahl der Threads im Pool abzurufen.
STDMETHOD(GetSize)(int* pnNumThreads);
Parameter
pnNumThreads
[out] Adresse der Variablen, die bei Erfolg die Anzahl der Threads im Pool empfängt.
Rückgabewert
S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.
Beispiel
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
Rufen Sie diese Methode auf, um die maximale Zeit in Millisekunden abzurufen, die der Threadpool auf das Herunterfahren eines Threads wartet.
STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);
Parameter
pdwMaxWait
[out] Adresse der Variablen, die bei Erfolg die maximale Zeit in Millisekunden empfängt, die der Threadpool wartet, bis ein Thread heruntergefahren wird.
Rückgabewert
S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.
Beispiel
Siehe IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetSize
Rufen Sie diese Methode auf, um die Anzahl der Threads im Pool festzulegen.
STDMETHOD(SetSize)int nNumThreads);
Parameter
nNumThreads
Die angeforderte Anzahl von Threads im Pool.
Wenn nNumThreads negativ ist, wird der absolute Wert mit der Anzahl der Prozessoren auf dem Computer multipliziert, um die Gesamtanzahl der Threads abzurufen.
Wenn nNumThreads null ist, wird ATLS_DEFAULT_THREADSPERPROC mit der Anzahl der Prozessoren auf dem Computer multipliziert, um die Gesamtanzahl der Threads abzurufen.
Rückgabewert
S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.
Beispiel
Siehe IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetTimeout
Rufen Sie diese Methode auf, um die maximale Zeit in Millisekunden festzulegen, die der Threadpool auf das Herunterfahren eines Threads wartet.
STDMETHOD(SetTimeout)(DWORD dwMaxWait);
Parameter
dwMaxWait
Die angeforderte maximale Zeit in Millisekunden, die der Threadpool wartet, bis ein Thread heruntergefahren wird.
Rückgabewert
S_OK bei Erfolg, ein HRESULT-Fehler bei einem Fehlschlag.
Beispiel
Siehe IThreadPoolConfig::GetSize.