"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que o WinAPI Sleep(1) resulta em uma pausa de 15 milissegundos?

Por que o WinAPI Sleep(1) resulta em uma pausa de 15 milissegundos?

Publicado em 2024-11-08
Navegar:258

Why Does WinAPI Sleep(1) Result in a 15 Millisecond Pause?

Compreendendo a discrepância na duração da função WinAPI Sleep()

Ao invocar a função WinAPI Sleep() com um parâmetro de 1 milissegundo, ela observa-se que o thread realmente faz uma pausa por um período muito mais longo, normalmente em torno de 15 milissegundos. Esse fenômeno levanta preocupações sobre possíveis problemas do sistema.

Quantização de tempo no Windows

O Windows emprega um mecanismo de quantização de tempo para seu agendamento de threads. Isso significa que o sistema agenda threads em intervalos discretos, conhecidos como quantum. A duração exata desses intervalos varia de acordo com vários fatores, incluindo a versão e edição do Windows. Em média, o Windows 7 opera com um quantum de tempo de aproximadamente 15,6 milissegundos.

Impact on Sleep() Duration

Como resultado da quantização de tempo, qualquer valor diferente de zero O argumento de atraso fornecido para Sleep() é arredondado para o quantum mais próximo. Isso explica por que uma chamada Sleep(1) realmente pausa o thread por 15 milissegundos, que é o quantum de tempo mais próximo de 1 milissegundo.

Verificação

Para verificar esse comportamento , você pode executar o trecho de código fornecido. A execução do código pode produzir resultados diferentes dependendo das configurações de resolução do temporizador do sistema. Se a resolução do temporizador de todo o sistema tiver sido definida manualmente para 1 milissegundo, você poderá observar durações de suspensão mais curtas. No entanto, por padrão, o Windows 7 usa uma resolução de temporizador de 15,6 milissegundos, levando a tempos de suspensão prolongados observados.

Conclusão

A discrepância na função Sleep() a duração é atribuída ao mecanismo inerente de quantização de tempo no agendador de threads do Windows. Esse arredondamento garante que o agendamento de threads seja executado de forma eficiente e previsível, evitando possíveis conflitos de agendamento de threads.

Tutorial mais recente Mais>

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