Comprendre la différence dans la durée de la fonction WinAPI Sleep()
Lors de l'appel de la fonction WinAPI Sleep() avec un paramètre de 1 milliseconde, elle On observe que le thread s'arrête en réalité pendant une durée beaucoup plus longue, généralement autour de 15 millisecondes. Ce phénomène soulève des inquiétudes quant aux problèmes potentiels du système.
Quantification du temps dans Windows
Windows utilise un mécanisme de quantification du temps pour sa planification des threads. Cela signifie que le système planifie les threads à intervalles discrets, appelés quantiques. La durée exacte de ces intervalles varie en fonction de plusieurs facteurs, notamment la version et l'édition de Windows. En moyenne, Windows 7 fonctionne avec un quantum de temps d'environ 15,6 millisecondes.
Impact sur la durée du sommeil()
En raison de la quantification du temps, tout non nul L’argument delay fourni à Sleep() est arrondi au quantum le plus proche. Cela explique pourquoi un appel Sleep(1) met en pause le thread pendant 15 millisecondes, ce qui est le quantum de temps le plus proche de 1 milliseconde.
Vérification
Pour vérifier ce comportement , vous pouvez exécuter l'extrait de code fourni. L'exécution du code peut donner des résultats différents en fonction des paramètres de résolution de la minuterie du système. Si la résolution de la minuterie à l'échelle du système a été réglée manuellement sur 1 milliseconde, vous pouvez observer des durées de sommeil plus courtes. Cependant, par défaut, Windows 7 utilise une résolution de minuterie de 15,6 millisecondes, ce qui entraîne des temps de sommeil prolongés observés.
Conclusion
La divergence dans la fonction Sleep() la durée est attribuée au mécanisme de quantification du temps inhérent au planificateur de threads de Windows. Cet arrondi garantit que la planification des threads est effectuée de manière efficace et prévisible, évitant ainsi les conflits potentiels de planification des threads.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3