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.
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