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

Pourquoi l'appel de fonction WinAPI Sleep() dépasse-t-il parfois la durée prévue ?

Mary-Kate Olsen
Libérer: 2024-10-26 22:02:02
original
470 Les gens l'ont consulté

Why Does WinAPI Sleep() Function Call Sometimes Exceed the Expected Duration?

Durée inattendue de l'appel de fonction WinAPI Sleep()

La fonction WinAPI Sleep() est utilisée pour suspendre l'exécution d'un thread pendant un durée spécifiée. Cependant, dans certains cas, il a été observé que la période de veille dépasse la valeur prévue.

Sous Windows 7, l'appel de Sleep(1) peut entraîner un délai d'environ 15 ms au lieu de 1 ms attendu. Cela a été vérifié en exécutant une boucle de 100 appels Sleep(1) et en observant un temps de sommeil total de 1 500 ms.

Comportement attendu

Il est important de noter que cette extension de durée est un comportement typique du système d'exploitation Windows. Le planificateur de threads fonctionne sur des quanta de temps, qui sont des intervalles de temps prédéfinis. Toute demande de délai non nul est ajustée au quantum complet le plus proche.

Par conséquent, la période de sommeil est élevée au quantum de temps le plus proche, qui dans ce cas est de 15 ms.

Dépendance sur les facteurs externes

La durée de la période de sommeil peut également être influencée par la résolution de la minuterie à l'échelle du système. Par défaut, Windows 7 définit cette résolution sur 15,6 ms. Cependant, d'autres programmes ou configurations système peuvent modifier ce paramètre, entraînant des résolutions de minuterie inférieures (par exemple, 1 ms).

Dans de tels scénarios, les appels Sleep(1) peuvent connaître des durées de veille plus courtes.

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