Share via


ExitThread, fonction (processthreadsapi.h)

Termine le thread appelant.

Syntaxe

void ExitThread(
  [in] DWORD dwExitCode
);

Paramètres

[in] dwExitCode

Code de sortie du thread.

Valeur de retour

None

Notes

ExitThread est la méthode préférée pour quitter un thread en code C. Toutefois, dans le code C++, le thread est supprimé avant qu’aucun destructeur ne puisse être appelé ou que tout autre nettoyage automatique puisse être effectué. Par conséquent, dans le code C++, vous devez retourner à partir de votre fonction thread.

Lorsque cette fonction est appelée (explicitement ou en retournant à partir d’une procédure de thread), la pile du thread actuel est libérée, toutes les E/S en attente initiées par le thread qui n’est pas associé à un port d’achèvement sont annulées et le thread se termine. La fonction de point d’entrée de toutes les bibliothèques de liens dynamiques (DLL) jointes est appelée avec une valeur indiquant que le thread est en cours de détachement de la DLL.

Si le thread est le dernier thread du processus lorsque cette fonction est appelée, le processus du thread est également terminé.

L’état de l’objet thread est signalé, libérant tous les autres threads qui attendaient la fin du thread. L’arrêt du thread status de STILL_ACTIVE à la valeur du paramètre dwExitCode.

La fin d’un thread ne supprime pas nécessairement l’objet thread du système d’exploitation. Un objet thread est supprimé lorsque le dernier handle du thread est fermé.

Les fonctions ExitProcess, ExitThread, CreateThread, CreateRemoteThread et un processus qui démarre (à la suite d’un appel CreateProcess ) sont sérialisés entre eux au sein d’un processus. Un seul de ces événements peut se produire dans un espace d’adressage à la fois. Cela signifie que les restrictions suivantes sont appliquées :

  • Pendant le démarrage du processus et les routines d’initialisation de DLL, de nouveaux threads peuvent être créés, mais ils ne commencent pas l’exécution tant que l’initialisation de la DLL n’est pas terminée pour le processus.
  • Un seul thread d’un processus peut se trouver dans une routine d’initialisation ou de détachement de DLL à la fois.
  • ExitProcess ne retourne pas tant qu’aucun thread n’est dans ses routines d’initialisation ou de détachement de DLL.
Un thread dans un exécutable lié à la bibliothèque runtime C statique (CRT) doit utiliser _beginthread et _endthread pour la gestion des threads plutôt que CreateThread et ExitThread. Si vous ne le faites pas, de petites fuites de mémoire sont produites lorsque le thread appelle ExitThread. Une autre solution consiste à lier l’exécutable au CRT dans une DLL au lieu du CRT statique. Notez que cette fuite de mémoire se produit uniquement à partir d’une DLL si la DLL est liée au CRT statique et qu’un thread appelle la fonction DisableThreadLibraryCalls . Sinon, il est sûr d’appeler CreateThread et ExitThread à partir d’un thread dans une DLL qui est lié au CRT statique.

Utilisez la fonction GetExitCodeThread pour récupérer le code de sortie d’un thread.

Windows Phone 8.1 : cette fonction est prise en charge pour les applications Windows Phone Store sur Windows Phone 8.1 et versions ultérieures.

Windows 8.1 et Windows Server 2012 R2 : cette fonction est prise en charge pour les applications du Windows Store sur Windows 8.1, Windows Server 2012 R2 et versions ultérieures.

Exemples

Pour obtenir un exemple, consultez Utilisation d’objets d’événement.

Spécifications

   
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête processthreadsapi.h (inclure Windows.h sur Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Bibliothèque Kernel32.lib; WindowsPhoneCore.lib sur Windows Phone 8.1
DLL Kernel32.dll; KernelBase.dll sur Windows Phone 8.1

Voir aussi

CreateProcess

CreateRemoteThread

CreateThread

ExitProcess

FreeLibraryAndExitThread

GetExitCodeThread

OpenThread

Fonctions de processus et de thread

TerminateThread

Threads