Partager via


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.

Voir aussi

Classes
CThreadPool, classe