"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué el modo Sleep(1) en Windows a veces dura más de lo esperado?

¿Por qué el modo Sleep(1) en Windows a veces dura más de lo esperado?

Publicado el 2024-11-03
Navegar:495

Why Does Sleep(1) in Windows Sometimes Sleep for Longer Than Expected?

Investigando Sleep() Durmiendo más de lo esperado

La función Sleep() de la API de Windows es una herramienta versátil para suspender la ejecución de subprocesos. Sin embargo, algunos usuarios encuentran un comportamiento inesperado en el que la función permanece inactiva durante más tiempo del previsto. Este artículo profundizará en el problema, examinando su aparición común y sus posibles causas.

Disparidad de comportamiento y duración

Al llamar a Sleep(1) en un bucle 100 veces, Se observa que el tiempo total de sueño es de 1500 ms en lugar de 100 ms. Esta disparidad sugiere que la duración real del sueño es de aproximadamente 15 ms por iteración. Tenga en cuenta que este comportamiento varía según el sistema, y ​​algunos usuarios informan duraciones de suspensión constantes de 1 ms.

Posibles razones

La duración excesiva de la suspensión no necesariamente indica un mal funcionamiento del hardware o software . La programación de subprocesos de Windows emplea un "cuanto de tiempo", un intervalo de tiempo al que está vinculada la ejecución del subproceso. Para duraciones de suspensión distintas de cero, el retraso real se redondea al cuanto completo más cercano.

Cuanto de tiempo predeterminado

De forma predeterminada, Windows 7 tiene un cuanto de tiempo de 15,6 ms. Esto significa que Sleep(1) suspenderá el subproceso durante un mínimo de 15,6 ms, lo que dará como resultado un comportamiento observado de 15 ms de suspensión por iteración.

Explicación alternativa

En algunos casos, las duraciones de suspensión de 1 ms observadas pueden atribuirse a la presencia de otro programa o proceso que haya modificado la resolución del temporizador de todo el sistema a 1 ms. Esta anulación puede dar lugar a duraciones de sueño más precisas.

Conclusión

El comportamiento de la función Sleep() en este escenario suele ser el esperado. El mecanismo cuántico de tiempo del programador de subprocesos de Windows redondea las duraciones del sueño para completar intervalos, lo que da como resultado tiempos de sueño más prolongados para duraciones pequeñas. Sin embargo, factores externos, como la configuración modificada de la resolución del temporizador, también pueden influir en el comportamiento del sueño.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3