Fungsi TerminateThread (processthreadsapi.h)
Mengakhiri utas.
Sintaks
BOOL TerminateThread(
[in, out] HANDLE hThread,
[in] DWORD dwExitCode
);
Parameter
[in, out] hThread
Handel ke utas yang akan dihentikan.
Handel harus memiliki hak akses THREAD_TERMINATE . Untuk informasi selengkapnya, lihat Keamanan Utas dan Hak Akses.
[in] dwExitCode
Kode keluar untuk utas. Gunakan fungsi GetExitCodeThread untuk mengambil nilai keluar utas.
Nilai kembali
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
TerminateThread digunakan untuk menyebabkan utas keluar. Ketika ini terjadi, utas target tidak memiliki kesempatan untuk menjalankan kode mode pengguna apa pun. DLL yang dilampirkan ke utas tidak diberi tahu bahwa utas dihentikan. Sistem membebaskan tumpukan awal utas.
Windows Server 2003 dan Windows XP: Tumpukan awal utas target tidak dikosongkan, menyebabkan kebocoran sumber daya.
TerminateThread adalah fungsi berbahaya yang hanya boleh digunakan dalam kasus yang paling ekstrem. Anda harus memanggil TerminateThread hanya jika Anda tahu persis apa yang dilakukan utas target, dan Anda mengontrol semua kode yang mungkin dijalankan utas target pada saat penghentian. Misalnya, TerminateThread dapat mengakibatkan masalah berikut:
- Jika utas target memiliki bagian penting, bagian penting tidak akan dirilis.
- Jika utas target mengalokasikan memori dari tumpukan, kunci tumpukan tidak akan dilepaskan.
- Jika utas target menjalankan panggilan kernel32 tertentu saat dihentikan, status kernel32 untuk proses utas bisa tidak konsisten.
- Jika utas target memanipulasi status global DLL bersama, status DLL dapat dihancurkan, yang memengaruhi pengguna DLL lainnya.
Jika utas target adalah utas terakhir dari proses ketika fungsi ini dipanggil, proses utas juga dihentikan.
Status objek utas menjadi sinyal, melepaskan utas lain yang telah menunggu utas dihentikan. Status penghentian utas berubah dari STILL_ACTIVE menjadi nilai parameter dwExitCode .
Mengakhiri utas tidak selalu menghapus objek utas dari sistem. Objek utas dihapus saat handel utas terakhir ditutup.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | processthreadsapi.h (termasuk Windows.h pada Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Pustaka | Kernel32.lib |
DLL | Kernel32.dll |