Fonction de veille en c dans les fenêtres. Est-ce une fonction avec une meilleure précision existe?

StackOverflow https://stackoverflow.com/questions/945320

Question

Je me demandais si quelqu'un connaissait une meilleure fonction de sommeil qui pourrait être utilisé dans les fenêtres en c, autre que le sommeil (), qui prend une entrée de milliseconde et garantit seulement que l'entrée est la quantité minimum de temps écoulé. Je passe en 1 milliseconde, mais se fait un retard 15-16 milliseconde. Est-il possible de définir avec précision un temps de sommeil spécifié?

Était-ce utile?

La solution

Non, pas vraiment. Lorsque vous dites à votre programme pour dormir, vous donnez le processeur et de laisser le système d'exploitation de décider quoi faire. Une fois que le système d'exploitation est en contrôle, il décide quand donner votre programme une autre tranche de temps de traitement. Ceci est la raison pour laquelle vous pouvez spécifier un minimum, mais il n'y a aucune garantie que le système d'exploitation revenir à votre processus à tout moment.

Autres conseils

Regardez dans Multimédia Timers.

Le sommeil ne garantit que votre processus ne sera pas exécuté pour au moins n millisecondes, pas qu'il dormira exactement n millisecondes. Peut-être que vous voulez mettre en place une minuterie? Ou occupé attente (c.-à-QueryPerformanceCounter de sondage dans une boucle).

Je vais essayer d'éviter cette approche (attente active) à moins que vous devez cependant, vous êtes cycles de combustion et vous vous arrêtez la CPU d'être mis en vitesse d'horloge plus basses (durée de vie de la batterie à savoir la combustion)

Non, il n'y a pas une meilleure fonction de veille sur Windows car millisecondes est le niveau de granularité disponible. Si vous voulez dormir moins de temps vous aurez besoin de mettre en œuvre un verrou de rotation de toutes sortes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top