Comment puis-je déterminer si un thread Win32 est terminé?

Comment puis-je déterminer si un thread Win32 est terminé?

La documentation de GetExitCodeThread vous avertit de ne pas l’utiliser pour cette raison, car le code d’erreur STILL_ACTIVE peut être renvoyé pour d’autres raisons.

Merci pour l’aide! 🙂

MSDN mentionne que “lorsqu’un thread se termine, l’object thread atteint un état signalé, satisfaisant les threads en attente sur l’object”.

Ainsi, vous pouvez vérifier si un thread est terminé en vérifiant l’état du descripteur de thread – qu’il soit signalé ou non:

DWORD result = WaitForSingleObject( hThread, 0); if (result == WAIT_OBJECT_0) { // the thread handle is signaled - the thread has terminated } else { // the thread handle is not signaled - the thread is still alive } 

La documentation à laquelle vous vous STILL_ACTIVE met en garde contre l’utilisation de STILL_ACTIVE comme code de retour, car il ne peut pas être distingué de la valeur de retour utilisée pour indiquer un thread actif. Donc, ne l’utilisez pas comme valeur de retour et vous n’aurez pas ce problème.