Interfaccia IThreadPoolConfig
Questa interfaccia fornisce metodi per la configurazione di un pool di thread.
Importante
Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.
Sintassi
__interface
__declspec(uuid("B1F64757-6E88-4fa2-8886-7848B0D7E660")) IThreadPoolConfig : public IUnknown
Membri
Metodi
Nome | Descrizione |
---|---|
GetSize | Chiamare questo metodo per ottenere il numero di thread nel pool. |
GetTimeout | Chiamare questo metodo per ottenere il tempo massimo in millisecondi in cui il pool di thread attenderà l'arresto di un thread. |
SetSize | Chiamare questo metodo per impostare il numero di thread nel pool. |
SetTimeout | Chiamare questo metodo per impostare il tempo massimo in millisecondi in cui il pool di thread attenderà l'arresto di un thread. |
Osservazioni:
Questa interfaccia viene implementata da CThreadPool.
Requisiti
Intestazione: atlutil.h
IThreadPoolConfig::GetSize
Chiamare questo metodo per ottenere il numero di thread nel pool.
STDMETHOD(GetSize)(int* pnNumThreads);
Parametri
pnNumThreads
[out] Indirizzo della variabile che, in caso di esito positivo, riceve il numero di thread nel pool.
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
Esempio
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
Chiamare questo metodo per ottenere il tempo massimo in millisecondi in cui il pool di thread attenderà l'arresto di un thread.
STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);
Parametri
pdwMaxWait
[out] L'indirizzo della variabile che, in caso di esito positivo, riceve il tempo massimo in millisecondi in cui il pool di thread attenderà l'arresto di un thread.
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
Esempio
Vedere IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetSize
Chiamare questo metodo per impostare il numero di thread nel pool.
STDMETHOD(SetSize)int nNumThreads);
Parametri
nNumThreads
Numero richiesto di thread nel pool.
Se nNumThreads è negativo, il relativo valore assoluto verrà moltiplicato per il numero di processori nel computer per ottenere il numero totale di thread.
Se nNumThreads è zero, ATLS_DEFAULT_THREADSPERPROC verrà moltiplicato per il numero di processori nel computer per ottenere il numero totale di thread.
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
Esempio
Vedere IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetTimeout
Chiamare questo metodo per impostare il tempo massimo in millisecondi in cui il pool di thread attenderà l'arresto di un thread.
STDMETHOD(SetTimeout)(DWORD dwMaxWait);
Parametri
dwMaxWait
Tempo massimo richiesto in millisecondi in cui il pool di thread attenderà l'arresto di un thread.
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
Esempio
Vedere IThreadPoolConfig::GetSize.