Interruption de l’exécution des threads

Un thread peut suspendre et reprendre l’exécution d’un autre thread. Lorsqu’un thread est suspendu, il n’est pas planifié pour l’heure sur le processeur.

Si un thread est créé dans un état suspendu (avec l’indicateur de création _ suspendu ), il ne commence pas à s’exécuter jusqu’à ce qu’un autre thread appelle la fonction ResumeThread avec un handle vers le thread suspendu. Cela peut être utile pour initialiser l’état du thread avant qu’il commence à s’exécuter. La suspension d’un thread au moment de la création peut être utile pour une synchronisation ponctuelle, car cela garantit que le thread suspendu exécutera 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 où l’exécution du thread est suspendue. Cette fonction est principalement conçue pour être utilisée par les débogueurs.

Un thread peut générer temporairement son exécution pour un intervalle spécifié en appelant les fonctions Sleep ou SleepEx . cela est particulièrement utile dans les cas où le thread répond à l’interaction de l’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 l’heure sur le processeur.

La fonction SwitchToThread est similaire à Sleep et SleepEx, sauf que vous ne pouvez pas spécifier l’intervalle. SwitchToThread autorise le thread à abandonner sa tranche de temps.