Bagikan melalui


Antarmuka IThreadPoolConfig

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.

Lihat juga

Kelas
Kelas CThreadPool