Enigma da função WinAPI Sleep: sono mais longo do que o esperado
Ao invocar a função WinAPI Sleep com um parâmetro de 1, os usuários podem encontrar atrasos no thread excedendo a duração pretendida. Na verdade, uma série repetida de 100 chamadas Sleep(1) resultou em um tempo total de suspensão de 1.500 ms, muito maior do que os 100 ms estipulados.
Causa do sono prolongado:
Esse comportamento é inerente ao agendador de threads do Windows. Ele opera com um quantum de tempo, ou um período definido durante o qual um thread pode ser executado. Atrasos diferentes de zero são inerentemente arredondados para o quantum completo mais próximo.
Problemas plausíveis do sistema:
Embora o comportamento observado seja típico, pode ser vantajoso descartar possíveis problemas do sistema que podem agravar o problema:
Considerações adicionais:
É digno de nota que outros programas em execução podem ajustar a resolução do temporizador em todo o sistema, resultando potencialmente em um tamanho quântico menor. Isso pode explicar os casos em que os atrasos do Sleep(1) são relatados como estando dentro do período pretendido de 1 ms. A resolução padrão do temporizador no Windows 7 deve ser em torno de 15,6 ms, não 1 ms.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3