Timer précis mode console

Résolu
bigzooloo Messages postés 36 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 6 octobre 2009 - 1 déc. 2005 à 18:44
brownfire Messages postés 25 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 3 mai 2006 - 20 déc. 2005 à 20:32
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

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
1 déc. 2005 à 20:11
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 ]
3
bigzooloo Messages postés 36 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 6 octobre 2009
2 déc. 2005 à 14:32
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 .
0
brownfire Messages postés 25 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 3 mai 2006
20 déc. 2005 à 20:32
L'api prevoit les fonction QueryPerformanceFrequency et QuerryPerformanceCounter
0
Rejoignez-nous