Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Antarmuka ini menyediakan metode untuk mengonfigurasi kumpulan utas.
Penting
Kelas ini dan anggotanya tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime.
Sintaks
__interface
__declspec(uuid("B1F64757-6E88-4fa2-8886-7848B0D7E660")) IThreadPoolConfig : public IUnknown
Anggota
Metode
| Nama | Deskripsi |
|---|---|
| GetSize | Panggil metode ini untuk mendapatkan jumlah utas di kumpulan. |
| GetTimeout | Panggil metode ini untuk mendapatkan waktu maksimum dalam milidetik bahwa kumpulan utas akan menunggu utas dimatikan. |
| Atur Ukuran | Panggil metode ini untuk mengatur jumlah utas di kumpulan. |
| SetTimeout | Panggil metode ini untuk mengatur waktu maksimum dalam milidetik bahwa kumpulan utas akan menunggu utas dimatikan. |
Keterangan
Antarmuka ini diimplementasikan oleh CThreadPool.
Persyaratan
Header: atlutil.h
IThreadPoolConfig::GetSize
Panggil metode ini untuk mendapatkan jumlah utas di kumpulan.
STDMETHOD(GetSize)(int* pnNumThreads);
Parameter
pnNumThreads
[out] Alamat variabel yang, pada keberhasilan, menerima jumlah utas di kumpulan.
Tampilkan Nilai
Mengembalikan S_OK saat berhasil, atau kesalahan HRESULT saat gagal.
Contoh
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
Panggil metode ini untuk mendapatkan waktu maksimum dalam milidetik bahwa kumpulan utas akan menunggu utas dimatikan.
STDMETHOD(GetTimeout)(DWORD* pdwMaxWait);
Parameter
pdwMaxWait
[out] Alamat variabel yang, pada keberhasilan, menerima waktu maksimum dalam milidetik bahwa kumpulan utas akan menunggu utas dimatikan.
Tampilkan Nilai
Mengembalikan S_OK saat berhasil, atau kesalahan HRESULT saat gagal.
Contoh
Lihat IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetSize
Panggil metode ini untuk mengatur jumlah utas di kumpulan.
STDMETHOD(SetSize)int nNumThreads);
Parameter
nNumThreads
Jumlah utas yang diminta di kumpulan.
Jika nNumThreads negatif, nilai absolutnya akan dikalikan dengan jumlah prosesor di komputer untuk mendapatkan jumlah total utas.
Jika nNumThreads adalah nol, ATLS_DEFAULT_THREADSPERPROC akan dikalikan dengan jumlah prosesor di komputer untuk mendapatkan jumlah total utas.
Tampilkan Nilai
Mengembalikan S_OK saat berhasil, atau kesalahan HRESULT saat gagal.
Contoh
Lihat IThreadPoolConfig::GetSize.
IThreadPoolConfig::SetTimeout
Panggil metode ini untuk mengatur waktu maksimum dalam milidetik bahwa kumpulan utas akan menunggu utas dimatikan.
STDMETHOD(SetTimeout)(DWORD dwMaxWait);
Parameter
dwMaxWait
Waktu maksimum yang diminta dalam milidetik bahwa kumpulan utas akan menunggu utas dimatikan.
Tampilkan Nilai
Mengembalikan S_OK saat berhasil, atau kesalahan HRESULT saat gagal.
Contoh
Lihat IThreadPoolConfig::GetSize.