Maison > développement back-end > C++ > le corps du texte

Pourquoi WinAPI Sleep(1) entraîne-t-il une pause de 15 millisecondes ?

Linda Hamilton
Libérer: 2024-10-25 08:47:28
original
282 Les gens l'ont consulté

Why Does WinAPI Sleep(1) Result in a 15 Millisecond Pause?

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 Sleep()

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

L'écart 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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!