Timer précis mode console [Résolu]

Signaler
Messages postés
36
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
6 octobre 2009
-
Messages postés
25
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
3 mai 2006
-
Bonjour,

Voici mon problème : je souhaite avoir un Timer PRECIS de 40 ms en mode console.

- J'ai déjà essayé la fonction Sleep(40) mais elle attend ENVIRON 40 ms (surtout que j'utilise plusieurs threads).
- Egalement la fonction WaitForSingleObject(event,40), mais c'est le même problème.
- Je ne peux pas utiliser SetTimer() puisque je n'ais pas de Handle de fenêtre, ni de fonction pour récupérer le WM_TIMER. (a moins qu'il y ai un équivalent ?)
- Il reste la solution d'effectuer une boucle et de tester à chaque itération de nombre de ticks d'horloge CPU. Mais c'est une attente active et je ne veux pas.

Je suis à cours d'idées... Quelqu'un aurait-il quelque chose à proposer ?

Merci.

3 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
Salut,

Pour utiliser SetTimer() tu n'a pas obligatoirement besoin d'une
fenetre, tu peux passer un pointeur sur une callback en dernier param,
mais il faut quand meme que le thread qui crée le timer ai une boucle
de message (qui utilise GetMessage() et surtout DispatchMessage()).



Sinon il existe d'autres types de timer, comme ceux créés avec
CreateWaitableTimer(), ou ceux créés avec CreateTimerQueueTimer().



Dans tout les cas pour augmenter la precision du timer il faudra peut etre augmenter la priorité du thread courant ?



[createtimerqueuetimer.htm ]
Messages postés
36
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
6 octobre 2009

Salut,

Merci pour cette réponse parfaite : pas de chose "évidente", mais des remarques pertinantes.
En effet, après recherches, il semble que les Waitable et Queue timer soit plus précis que SetTimer.

Pour les comparer, je suis tombé sur cet article : (en anglais)
http://www.codeproject.com/system/timers_intro.asp

Maintenant, je n'ai plus qu'à vérifier leur précision respective .
Messages postés
25
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
3 mai 2006

L'api prevoit les fonction QueryPerformanceFrequency et QuerryPerformanceCounter