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.
Kelas ini membuat utas pekerja atau menggunakan yang sudah ada, menunggu pada satu atau beberapa handel objek kernel, dan menjalankan fungsi klien tertentu ketika salah satu handel diberi sinyal.
Penting
Kelas ini dan anggotanya tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime.
Sintaks
template <class ThreadTraits = DefaultThreadTraits>
class CWorkerThread
Parameter
ThreadTraits
Kelas yang menyediakan fungsi pembuatan utas, seperti CRTThreadTraits atau Win32ThreadTraits.
Anggota
Struktur terlindungi
| Nama | Deskripsi |
|---|---|
WorkerClientEntry |
Konstruktor Publik
| Nama | Deskripsi |
|---|---|
| CWorkerThread::CWorkerThread | Konstruktor untuk utas pekerja. |
| CWorkerThread::~CWorkerThread | Destruktor untuk utas pekerja. |
Metode Publik
| Nama | Deskripsi |
|---|---|
| CWorkerThread::AddHandle | Panggil metode ini untuk menambahkan handel objek yang dapat ditunggu ke daftar yang dikelola oleh utas pekerja. |
| CWorkerThread::AddTimer | Panggil metode ini untuk menambahkan timer yang dapat ditunggu berkala ke daftar yang dikelola oleh utas pekerja. |
| CWorkerThread::GetThreadHandle | Panggil metode ini untuk mendapatkan penanganan utas utas pekerja. |
| CWorkerThread::GetThreadId | Panggil metode ini untuk mendapatkan ID utas utas pekerja. |
| CWorkerThread::Initialize | Panggil metode ini untuk menginisialisasi utas pekerja. |
| CWorkerThread::RemoveHandle | Panggil metode ini untuk menghapus handel dari daftar objek yang dapat ditunda. |
| CWorkerThread::Shutdown | Panggil metode ini untuk mematikan utas pekerja. |
Keterangan
Untuk menggunakan CWorkerThread
Buat instans kelas ini.
Panggil CWorkerThread::Initialize.
Panggil CWorkerThread::AddHandle dengan handel objek kernel dan pointer ke implementasi IWorkerThreadClient.
- atau -
Panggil CWorkerThread::AddTimer dengan pointer ke implementasi IWorkerThreadClient.
Terapkan IWorkerThreadClient::Execute untuk mengambil beberapa tindakan saat handel atau timer diberi sinyal.
Untuk menghapus objek dari daftar objek yang dapat ditunda, panggil CWorkerThread::RemoveHandle.
Untuk mengakhiri utas, panggil CWorkerThread::Shutdown.
Persyaratan
Header: atlutil.h
CWorkerThread::AddHandle
Panggil metode ini untuk menambahkan handel objek yang dapat ditunggu ke daftar yang dikelola oleh utas pekerja.
HRESULT AddHandle(
HANDLE hObject,
IWorkerThreadClient* pClient,
DWORD_PTR dwParam) throw();
Parameter
hObject
Handel ke objek yang dapat ditunda.
pClient
Penunjuk ke antarmuka IWorkerThreadClient pada objek yang akan dipanggil saat handel diberi sinyal.
dwParam
Parameter yang akan diteruskan ke IWorkerThreadClient::Execute saat handel diberi sinyal.
Tampilkan Nilai
Mengembalikan S_OK saat berhasil, atau kesalahan HRESULT saat gagal.
Keterangan
IWorkerThreadClient::Execute akan dipanggil melalui pClient ketika handel, hObject, diberi sinyal.
CWorkerThread::AddTimer
Panggil metode ini untuk menambahkan timer yang dapat ditunggu berkala ke daftar yang dikelola oleh utas pekerja.
HRESULT AddTimer(
DWORD dwInterval,
IWorkerThreadClient* pClient,
DWORD_PTR dwParam,
HANDLE* phTimer) throw();
Parameter
dwInterval
Menentukan periode timer dalam milidetik.
pClient
Penunjuk ke antarmuka IWorkerThreadClient pada objek yang akan dipanggil saat handel diberi sinyal.
dwParam
Parameter yang akan diteruskan ke IWorkerThreadClient::Execute saat handel diberi sinyal.
phTimer
[out] Alamat variabel HANDLE yang, saat berhasil, menerima handel ke timer yang baru dibuat.
Tampilkan Nilai
Mengembalikan S_OK saat berhasil, atau kesalahan HRESULT saat gagal.
Keterangan
IWorkerThreadClient::Execute akan dipanggil melalui pClient ketika timer diberi sinyal.
Teruskan handel timer dari phTimer ke CWorkerThread::RemoveHandle untuk menutup timer.
CWorkerThread::CWorkerThread
Konstruktor.
CWorkerThread() throw();
CWorkerThread::~CWorkerThread
Destruktor.
~CWorkerThread() throw();
Keterangan
Memanggil CWorkerThread::Shutdown.
CWorkerThread::GetThreadHandle
Panggil metode ini untuk mendapatkan penanganan utas utas pekerja.
HANDLE GetThreadHandle() throw();
Tampilkan Nilai
Mengembalikan handel utas atau NULL jika utas pekerja belum diinisialisasi.
CWorkerThread::GetThreadId
Panggil metode ini untuk mendapatkan ID utas utas pekerja.
DWORD GetThreadId() throw();
Tampilkan Nilai
Mengembalikan ID utas atau NULL jika utas pekerja belum diinisialisasi.
CWorkerThread::Initialize
Panggil metode ini untuk menginisialisasi utas pekerja.
HRESULT Initialize() throw();
HRESULT Initialize(CWorkerThread<ThreadTraits>* pThread) throw();
Parameter
pThread
Utas pekerja yang ada.
Tampilkan Nilai
Mengembalikan S_OK saat berhasil, atau kesalahan HRESULT saat gagal.
Keterangan
Metode ini harus dipanggil untuk menginisialisasi objek setelah pembuatan atau setelah panggilan ke CWorkerThread::Shutdown.
Agar dua objek atau lebih CWorkerThread menggunakan utas pekerja yang sama, inisialisasi salah satunya tanpa meneruskan argumen apa pun lalu meneruskan penunjuk ke objek tersebut Initialize ke metode yang lain. Objek yang diinisialisasi menggunakan penunjuk harus dimatikan sebelum objek digunakan untuk menginisialisasinya.
Lihat CWorkerThread::Shutdown untuk informasi tentang bagaimana perilaku metode tersebut berubah saat diinisialisasi menggunakan penunjuk ke objek yang ada.
CWorkerThread::RemoveHandle
Panggil metode ini untuk menghapus handel dari daftar objek yang dapat ditunda.
HRESULT RemoveHandle(HANDLE hObject) throw();
Parameter
hObject
Handel yang akan dihapus.
Tampilkan Nilai
Mengembalikan S_OK saat berhasil, atau kesalahan HRESULT saat gagal.
Keterangan
Ketika handel dihapus IWorkerThreadClient::CloseHandle akan dipanggil pada objek terkait yang diteruskan ke AddHandle. Jika panggilan ini gagal, CWorkerThread akan memanggil fungsi Windows CloseHandle pada handel.
CWorkerThread::Shutdown
Panggil metode ini untuk mematikan utas pekerja.
HRESULT Shutdown(DWORD dwWait = ATL_WORKER_THREAD_WAIT) throw();
Parameter
dwWait
Waktu dalam milidetik untuk menunggu utas pekerja dimatikan. ATL_WORKER_THREAD_WAIT default menjadi 10 detik. Jika perlu, Anda dapat menentukan nilai Anda sendiri untuk simbol ini sebelum menyertakan atlutil.h.
Tampilkan Nilai
Mengembalikan S_OK pada keberhasilan, atau kesalahan HRESULT pada kegagalan, seperti jika nilai batas waktu, dwWait, terlampaui.
Keterangan
Untuk menggunakan kembali objek, panggil CWorkerThread::Initialize setelah memanggil metode ini.
Perhatikan bahwa panggilan Shutdown pada objek yang diinisialisasi dengan penunjuk ke objek lain CWorkerThread tidak berpengaruh dan selalu mengembalikan S_OK.
Lihat juga
DefaultThreadTraits
Kelas
Multithreading: Membuat Utas Pekerja
Antarmuka IWorkerThreadClient