Bonjour,
Mon problème est le suivant. Je veux arrêter tous les threads de mon application (c++ sous linux utilisant pthread) rapidement même si ces derniers sont en train de faire un sleep, d'attendre une condition (pthread_cond_wait) ou d'essayer de lire dans un socket avec un timeout.
Si je teste une condition de fin dans la boucle principale du thread je dois attendre que toutes les opérations bloquantes soient terminées même si ce n'est pas utile avant que le thread s'arrête.
J'ai essayé d'utiliser pthread_cancel mais dans ce cas la je reçois une exception inconnue et mon programme ne se termine pas correctement avec le message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 while(!shutdownRequested) { // Attends 10 secondes avant de s'arrêter. sleep(10); }
FATAL: exception not rethrown
J'ai lu sur plusieur sites qu'il est fortement déconseillé d'utiliser pthread_cancel() dans un programme C++.
Ma question est donc la suivante : Comment annuler proprement et instantanément l'exécution d'un thread en C++?
Partager