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!