Aracılığıyla paylaş


IThreadPoolConfig Arabirimi

Bu arabirim, iş parçacığı havuzunu yapılandırma yöntemleri sağlar.

Önemli

Bu sınıf ve üyeleri Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.

Sözdizimi

__interface
    __declspec(uuid("B1F64757-6E88-4fa2-8886-7848B0D7E660")) IThreadPoolConfig : public IUnknown

Üyeler

Yöntemler

Veri Akışı Adı Açıklama
GetSize Havuzdaki iş parçacığı sayısını almak için bu yöntemi çağırın.
GetTimeout İş parçacığı havuzunun bir iş parçacığının kapatılmasını bekleyeceği milisaniye cinsinden maksimum süreyi almak için bu yöntemi çağırın.
SetSize Havuzdaki iş parçacığı sayısını ayarlamak için bu yöntemi çağırın.
SetTimeout İş parçacığı havuzunun bir iş parçacığının kapatılmasını bekleyeceği milisaniye cinsinden maksimum süreyi ayarlamak için bu yöntemi çağırın.

Açıklamalar

Bu arabirim CThreadPool tarafından uygulanır.

Gereksinimler

Üst bilgi: atlutil.h

IThreadPoolConfig::GetSize

Havuzdaki iş parçacığı sayısını almak için bu yöntemi çağırın.

STDMETHOD(GetSize)(int* pnNumThreads);

Parametreler

pnNumThreads
[out] Başarılı olduğunda havuzdaki iş parçacığı sayısını alan değişkenin adresi.

Dönüş Değeri

Başarıda S_OK veya hatada HRESULT hatası döndürür.

Örnek

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

İş parçacığı havuzunun bir iş parçacığının kapatılmasını bekleyeceği milisaniye cinsinden maksimum süreyi almak için bu yöntemi çağırın.

STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);

Parametreler

pdwMaxWait
[out] Başarı durumunda iş parçacığı havuzunun bir iş parçacığının kapatılmasını bekleyeceği en uzun süreyi milisaniye cinsinden alan değişkenin adresi.

Dönüş Değeri

Başarıda S_OK veya hatada HRESULT hatası döndürür.

Örnek

Bkz. IThreadPoolConfig::GetSize.

IThreadPoolConfig::SetSize

Havuzdaki iş parçacığı sayısını ayarlamak için bu yöntemi çağırın.

STDMETHOD(SetSize)int nNumThreads);

Parametreler

nNumThreads
Havuzdaki istenen iş parçacığı sayısı.

nNumThreads negatifse, toplam iş parçacığı sayısını elde etmek için mutlak değeri makinedeki işlemci sayısıyla çarpılır.

nNumThreads sıfırsa, ATLS_DEFAULT_THREADSPERPROC toplam iş parçacığı sayısını elde etmek için makinedeki işlemci sayısıyla çarpılır.

Dönüş Değeri

Başarıda S_OK veya hatada HRESULT hatası döndürür.

Örnek

Bkz. IThreadPoolConfig::GetSize.

IThreadPoolConfig::SetTimeout

İş parçacığı havuzunun bir iş parçacığının kapatılmasını bekleyeceği milisaniye cinsinden maksimum süreyi ayarlamak için bu yöntemi çağırın.

STDMETHOD(SetTimeout)(DWORD dwMaxWait);

Parametreler

dwMaxWait
İş parçacığı havuzunun bir iş parçacığının kapatılmasını bekleyeceği milisaniye cinsinden istenen en uzun süre.

Dönüş Değeri

Başarıda S_OK veya hatada HRESULT hatası döndürür.

Örnek

Bkz. IThreadPoolConfig::GetSize.

Ayrıca bkz.

Sınıflar
CThreadPool Sınıfı