Question Fil de sommeil d'un autre


Étant donné deux std :: threads A et B, est-il possible que A puisse suspendre B, sans aucun code personnalisé dans B à cette fin?

Justification: actuellement, B est un algorithme très compliqué, qui devrait sortir proprement lorsque A (un thread de surveillance) le lui dit, en vérifiant de temps en temps certains indicateurs partagés. Le problème est que, pour le débogage, je voudrais savoir exactement dans quel état B est le moment où A demande une telle sortie (par exemple pour voir où nous avons oublié de vérifier le drapeau partagé), donc je voudrais interrompre B (pour le débogage) de UNE.

Merci d'avance! Broes


11
2017-12-09 08:37


origine


Réponses:


Cela dépend du système. Windows a une fonction SuspendThread, mais j'avoue que je n'en sais pas beaucoup. Sous Unix, vous devriez pouvoir envoyer un signal au thread en utilisant pthread_kill (qui malgré son nom ne tue pas le thread, mais envoie juste un signal), et attrape-le dans le thread ciblé, où le gestionnaire de signal peut appeler sleep.


6
2017-12-09 09:00