Fungsi ExitThread (processthreadsapi.h)

Mengakhiri utas panggilan.

Sintaks

void ExitThread(
  [in] DWORD dwExitCode
);

Parameter

[in] dwExitCode

Kode keluar untuk utas.

Nilai kembali

Tidak ada

Keterangan

ExitThread adalah metode yang disukai untuk keluar dari utas dalam kode C. Namun, dalam kode C++, utas keluar sebelum destruktor dapat dipanggil atau pembersihan otomatis lainnya dapat dilakukan. Oleh karena itu, dalam kode C++, Anda harus kembali dari fungsi utas Anda.

Ketika fungsi ini dipanggil (baik secara eksplisit atau dengan mengembalikan dari prosedur utas), tumpukan utas saat ini dibatalkan alokasinya, semua I/O yang tertunda yang dimulai oleh utas yang tidak terkait dengan port penyelesaian dibatalkan, dan utas berakhir. Fungsi titik entri dari semua pustaka tautan dinamis (DLL) terlampir dipanggil dengan nilai yang menunjukkan bahwa utas terlepas dari DLL.

Jika utas adalah utas terakhir dalam 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 ke nilai parameter dwExitCode .

Mengakhiri utas tidak selalu menghapus objek utas dari sistem operasi. Objek utas dihapus saat handel terakhir ke utas ditutup.

Fungsi ExitProcess, ExitThread, CreateThread, CreateRemoteThread , dan proses yang dimulai (sebagai hasil dari panggilan CreateProcess ) diserialisasikan antara satu sama lain dalam proses. Hanya salah satu peristiwa ini yang dapat terjadi di ruang alamat pada satu waktu. Ini berarti pembatasan berikut berlaku:

  • Selama rutinitas startup proses dan inisialisasi DLL, utas baru dapat dibuat, tetapi tidak memulai eksekusi sampai inisialisasi DLL dilakukan untuk proses tersebut.
  • Hanya satu utas dalam proses yang dapat berada dalam inisialisasi DLL atau melepaskan rutinitas pada satu waktu.
  • ExitProcess tidak kembali sampai tidak ada utas dalam inisialisasi DLL atau melepaskan rutinitas.
Utas dalam executable yang ditautkan ke pustaka run-time C statis (CRT) harus menggunakan _beginthread dan _endthread untuk manajemen utas daripada CreateThread dan ExitThread. Kegagalan untuk melakukannya menghasilkan kebocoran memori kecil saat utas memanggil ExitThread. Pekerjaan lain adalah menautkan executable ke CRT di DLL alih-alih CRT statis. Perhatikan bahwa kebocoran memori ini hanya terjadi dari DLL jika DLL ditautkan ke CRT statis dan utas memanggil fungsi DisableThreadLibraryCalls . Jika tidak, aman untuk memanggil CreateThread dan ExitThread dari utas di DLL yang ditautkan ke CRT statis.

Gunakan fungsi GetExitCodeThread untuk mengambil kode keluar utas.

Windows Phone 8.1: Fungsi ini didukung untuk aplikasi Windows Phone Store di Windows Phone 8.1 dan yang lebih baru.

Windows 8.1 dan Windows Server 2012 R2: Fungsi ini didukung untuk aplikasi Windows Store di Windows 8.1, Windows Server 2012 R2, dan yang lebih baru.

Contoh

Misalnya, lihat Menggunakan Objek Peristiwa.

Persyaratan

   
Klien minimum yang didukung Windows XP [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
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; WindowsPhoneCore.lib di Windows Phone 8.1
DLL Kernel32.dll; KernelBase.dll di Windows Phone 8.1

Lihat juga

CreateProcess

CreateRemoteThread

CreateThread

ExitProcess

FreeLibraryAndExitThread

GetExitCodeThread

OpenThread

Fungsi Proses dan Utas

TerminateThread

Threads