ExitThread 函式 (processthreadsapi.h)

結束呼叫執行緒。

語法

void ExitThread(
  [in] DWORD dwExitCode
);

參數

[in] dwExitCode

執行緒的結束代碼。

傳回值

備註

ExitThread 是在 C 程式碼中結束執行緒的慣用方法。 不過,在 C++ 程式碼中,執行緒會在呼叫任何解構函式之前結束,或是執行任何其他自動清除。 因此,在 C++ 程式碼中,您應該從執行緒函式傳回 。

呼叫此函式時 (明確或從執行緒程式傳回) ,則會解除配置目前線程的堆疊、取消與完成埠無關之執行緒所起始的所有擱置 I/O,且執行緒會終止。 會叫用所有附加動態連結程式庫的進入點函式, (DLL) 叫用,指出執行緒與 DLL 中斷連結。

如果在呼叫此函式時,執行緒是進程中的最後一個執行緒,則執行緒的進程也會終止。

執行緒物件的狀態會變成訊號,釋放任何其他等候執行緒終止的執行緒。 執行緒的終止狀態會從 STILL_ACTIVE 變更為 dwExitCode 參數的值。

終止執行緒不一定會從作業系統中移除執行緒物件。 關閉執行緒的最後一個控制碼時,會刪除線程物件。

ExitProcessExitThread、CreateThreadCreateRemoteThread函式,以及啟動 (的程式,因為CreateProcess呼叫的結果) 會在進程內彼此序列化。 一次只能在位址空間中發生其中一個事件。 這表示下列限制保留:

  • 在進程啟動和 DLL 初始化常式期間,可以建立新的執行緒,但直到對進程完成 DLL 初始化之前,才會開始執行。
  • 一次只能有一個執行緒位於 DLL 初始化或卸離常式中。
  • 在 DLL 初始化或卸離常式中沒有線程之前,ExitProcess不會傳回。
可執行檔中連結至靜態 C 執行時間程式庫的執行緒, (CRT) 應該使用 執行緒管理_beginthread_endthread ,而不是 CreateThreadExitThread。 當執行緒呼叫 ExitThread時,無法這麼做會導致記憶體不足。 另一個解決方法是將可執行檔連結到 DLL 中的 CRT,而不是靜態 CRT。 請注意,只有在 DLL 連結到靜態 CRT 且執行緒呼叫 DisableThreadLibraryCalls 函式時,才會發生此記憶體流失。 否則,從連結至靜態 CRT 之 DLL 中的執行緒呼叫 CreateThreadExitThread 是安全的。

使用 GetExitCodeThread 函式來擷取執行緒的結束代碼。

Windows Phone 8.1:Windows Phone 8.1和更新版本上的 Windows Phone Store 應用程式支援此函式。

Windows 8.1Windows Server 2012 R2:Windows 市集應用程式在 Windows 8.1、Windows Server 2012 R2 及更新版本上支援此功能。

範例

如需範例,請參閱 使用事件物件

需求

   
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 processthreadsapi.h (Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2)
程式庫 Kernel32.lib;Windows Phone 8.1 上的 WindowsPhoneCore.lib
Dll Kernel32.dll;Windows Phone 8.1 上的 KernelBase.dll

另請參閱

CreateProcess

CreateRemoteThread

CreateThread

ExitProcess

FreeLibraryAndExitThread

GetExitCodeThread

OpenThread

處理序和執行緒函式

TerminateThread

執行緒