Pergunta

Eu queria saber se alguém sabia de uma função melhor sono que poderia ser usado em janelas em C, com excepção Sleep (), que leva uma entrada milissegundo e só garante que a entrada é a quantidade mínima de tempo decorrido. Estou passando em 1 milissegundo, mas realmente ficando um atraso 15-16 milissegundo. Existe alguma maneira para definir com precisão um tempo de sono específico?

Foi útil?

Solução

Não, não realmente. Quando você informe o seu programa para o sono, você está dando-se o processador e deixar o sistema operacional decidir o que fazer a seguir. Uma vez que o sistema operacional está no controle, ele decide quando dar o seu programa de outra fatia de tempo de processamento. É por isso que você pode especificar um mínimo, mas não há nenhuma garantia de que o sistema operacional irá voltar para o seu processo a qualquer momento particular.

Outras dicas

Sleep só garante que seu processo não será executado para , pelo menos n milissegundos, não que ele vai dormir exatamente n milissegundos. Talvez você queira configurar um temporizador? Ou espera ocupada (ou seja poll QueryPerformanceCounter em um loop).

Eu tento evitar essa abordagem (ocupado espera) a menos que você tem que, porém, você está queimando ciclos e você está parando o CPU de ser colocado em velocidades de clock mais baixos (ou seja, queima a vida da bateria)

Não, não é uma função do sono melhor no Windows, porque milissegundos é o nível de granularidade disponível. Se você quiser dormir por menos tempo que você precisa para implementar um bloqueio de rotação das sortes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top