IThreadPoolConfig, interface
Cette interface fournit des méthodes pour configurer un pool de threads.
Important
Cette classe et ses membres ne peuvent pas être utilisés dans les applications qui s’exécutent dans Windows Runtime.
Syntaxe
__interface
__declspec(uuid("B1F64757-6E88-4fa2-8886-7848B0D7E660")) IThreadPoolConfig : public IUnknown
Membres
Méthodes
Nom | Description |
---|---|
GetSize | Appelez cette méthode pour obtenir le nombre de threads dans le pool. |
GetTimeout | Appelez cette méthode pour obtenir la durée maximale en millisecondes pendant laquelle le pool de threads attend qu’un thread s’arrête. |
SetSize | Appelez cette méthode pour définir le nombre de threads dans le pool. |
SetTimeout | Appelez cette méthode pour définir la durée maximale en millisecondes pendant laquelle le pool de threads attend qu’un thread s’arrête. |
Notes
Cette interface est implémentée par CThreadPool.
Spécifications
En-tête : atlutil.h
IThreadPoolConfig ::GetSize
Appelez cette méthode pour obtenir le nombre de threads dans le pool.
STDMETHOD(GetSize)(int* pnNumThreads);
Paramètres
pnNumThreads
[out] Adresse de la variable qui, en cas de réussite, reçoit le nombre de threads dans le pool.
Valeur de retour
Retourne S_OK en cas de réussite ou une erreur HRESULT en cas d’échec.
Exemple
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
Appelez cette méthode pour obtenir la durée maximale en millisecondes pendant laquelle le pool de threads attend qu’un thread s’arrête.
STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);
Paramètres
pdwMaxWait
[out] L’adresse de la variable qui, en cas de réussite, reçoit la durée maximale en millisecondes pendant laquelle le pool de threads attend qu’un thread s’arrête.
Valeur de retour
Retourne S_OK en cas de réussite ou une erreur HRESULT en cas d’échec.
Exemple
Voir IThreadPoolConfig ::GetSize.
IThreadPoolConfig ::SetSize
Appelez cette méthode pour définir le nombre de threads dans le pool.
STDMETHOD(SetSize)int nNumThreads);
Paramètres
nNumThreads
Nombre demandé de threads dans le pool.
Si nNumThreads est négatif, sa valeur absolue est multipliée par le nombre de processeurs de la machine pour obtenir le nombre total de threads.
Si nNumThreads est égal à zéro, ATLS_DEFAULT_THREADSPERPROC sera multiplié par le nombre de processeurs de la machine pour obtenir le nombre total de threads.
Valeur de retour
Retourne S_OK en cas de réussite ou une erreur HRESULT en cas d’échec.
Exemple
Voir IThreadPoolConfig ::GetSize.
IThreadPoolConfig ::SetTimeout
Appelez cette méthode pour définir la durée maximale en millisecondes pendant laquelle le pool de threads attend qu’un thread s’arrête.
STDMETHOD(SetTimeout)(DWORD dwMaxWait);
Paramètres
dwMaxWait
Durée maximale demandée en millisecondes pendant laquelle le pool de threads attend l’arrêt d’un thread.
Valeur de retour
Retourne S_OK en cas de réussite ou une erreur HRESULT en cas d’échec.
Exemple
Voir IThreadPoolConfig ::GetSize.