Funzione ExitThread (processthreadsapi.h)

Termina il thread chiamante.

Sintassi

void ExitThread(
  [in] DWORD dwExitCode
);

Parametri

[in] dwExitCode

Codice di uscita per il thread.

Valore restituito

nessuno

Osservazioni

ExitThread è il metodo preferito per uscire da un thread nel codice C. Tuttavia, nel codice C++ il thread viene chiuso prima che qualsiasi distruttore possa essere chiamato o qualsiasi altra pulizia automatica può essere eseguita. Pertanto, nel codice C++ è necessario restituire dalla funzione thread.

Quando questa funzione viene chiamata (in modo esplicito o restituito da una routine thread), lo stack del thread corrente viene deallocato, tutto l'I/O in sospeso avviato dal thread non associato a una porta di completamento viene annullato e il thread termina. La funzione del punto di ingresso di tutte le librerie di collegamento dinamico associate viene richiamata con un valore che indica che il thread si scollega dalla DLL.

Se il thread è l'ultimo thread nel processo quando questa funzione viene chiamata, il processo del thread viene terminato anche.

Lo stato dell'oggetto thread viene segnalato, rilasciando qualsiasi altro thread che era in attesa che il thread venga terminato. Lo stato di terminazione del thread cambia da STILL_ACTIVE al valore del parametro dwExitCode .

La terminazione di un thread non rimuove necessariamente l'oggetto thread dal sistema operativo. Un oggetto thread viene eliminato quando l'ultimo handle al thread viene chiuso.

Le funzioni ExitProcess, ExitThread, CreateThread, CreateRemoteThread e un processo che viene avviato (come risultato di una chiamata CreateProcess) vengono serializzati tra loro all'interno di un processo. Solo uno di questi eventi può verificarsi in uno spazio di indirizzi alla volta. Ciò significa che le restrizioni seguenti contengono:

  • Durante l'avvio del processo e le routine di inizializzazione DLL, è possibile creare nuovi thread, ma non iniziano l'esecuzione fino a quando non viene eseguita l'inizializzazione DLL per il processo.
  • Un solo thread in un processo può trovarsi in una routine di inizializzazione o scollegamento della DLL alla volta.
  • ExitProcess non restituisce fino a quando non si trovano thread nella routine di inizializzazione o scollegamento della DLL.
Un thread in un file eseguibile collegato alla libreria di runtime C statica (CRT) deve usare _beginthread e _endthread per la gestione dei thread anziché CreateThread e ExitThread. Non è possibile eseguire questa operazione in caso di perdite di memoria ridotte quando il thread chiama ExitThread. Un altro problema consiste nel collegare il file eseguibile a CRT in una DLL anziché al CRT statico. Si noti che questa perdita di memoria si verifica solo da una DLL se la DLL è collegata al CRT statico e un thread chiama la funzione DisableThreadLibraryCalls . In caso contrario, è possibile chiamare CreateThread e ExitThread da un thread in una DLL che collega al CRT statico.

Usare la funzione GetExitCodeThread per recuperare il codice di uscita di un thread.

Windows Phone 8.1: questa funzione è supportata per le app Windows Phone Store in Windows Phone 8.1 e versioni successive.

Windows 8.1 e Windows Server 2012 R2: questa funzione è supportata per le app di Windows Store in Windows 8.1, Windows Server 2012 R2 e versioni successive.

Esempio

Per un esempio, vedere Uso di oggetti evento.

Requisiti

   
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione processthreadsapi.h (includere Windows.h in Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Libreria Kernel32.lib; WindowsPhoneCore.lib in Windows Phone 8.1
DLL Kernel32.dll; KernelBase.dll Windows Phone 8.1

Vedi anche

CreateProcess

CreateRemoteThread

CreateThread

ExitProcess

FreeLibraryAndExitThread

GetExitCodeThread

OpenThread

Funzioni di processi e thread

TerminateThread

Discussioni