Suspension de l’exécution de thread
Un thread peut suspendre et reprendre l’exécution d’un autre thread. Lorsqu’un thread est suspendu, il n’est pas planifié pour le temps sur le processeur.
Si un thread est créé dans un état suspendu (avec l’indicateur CREATE_SUSPENDED ), il ne commence pas à s’exécuter tant qu’un autre thread n’appelle pas la fonction ResumeThread avec un handle pour le thread suspendu. Cela peut être utile pour initialiser l’état du thread avant qu’il ne commence à s’exécuter. La suspension d’un thread à la création peut être utile pour la synchronisation ponctuelle, car cela garantit que le thread suspendu exécute le point de départ de son code lorsque vous appelez ResumeThread.
La fonction SuspendThread n’est pas destinée à être utilisée pour la synchronisation de threads, car elle ne contrôle pas le point dans le code auquel l’exécution du thread est suspendue. Cette fonction est principalement conçue pour être utilisée par les débogueurs.
Un thread peut temporairement produire son exécution pendant un intervalle spécifié en appelant les fonctions Veille ou SleepEx Ceci est particulièrement utile dans les cas où le thread répond à l’interaction utilisateur, car il peut retarder l’exécution suffisamment longtemps pour permettre aux utilisateurs d’observer les résultats de leurs actions. Pendant l’intervalle de veille, le thread n’est pas planifié pour le temps sur le processeur.
La fonction SwitchToThread est similaire à Veille et SleepEx, sauf que vous ne pouvez pas spécifier l’intervalle. SwitchToThread permet au thread d’abandonner sa tranche de temps.