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.