Bonjour,
Je voudrais r�peter une action toutes les 3 ms! (avec une boucle for)
y a t il une classe timer en C++ pr�d�finie qui permet de le faire?
PS: g cherch� sur msdn mais il m'a sorti que le code C++ pour .NET
Merci pour votre aide
Version imprimable
Bonjour,
Je voudrais r�peter une action toutes les 3 ms! (avec une boucle for)
y a t il une classe timer en C++ pr�d�finie qui permet de le faire?
PS: g cherch� sur msdn mais il m'a sorti que le code C++ pour .NET
Merci pour votre aide
3 ms, �a va �tre chaud sous Windows.
Tu devrais poster dans le forum Visual C++.
Ce que tu peux faire : essayer d'utiliser les fonctions SetTimer(), ou faire une boucle et utiliser la fonction GetTickCount() pour mesurer le temps.
Si tu es sous windows et pour une telle pr�cision, GetTickCount ne sert � rien . Il faut utiliser le couple QueryPerformanceFrequency/QueryPerformanceCounter.Citation:
Envoy� par joyfullfr
Tu peux aussi utiliser la fonction Sleep mais c'est pour attendre un certain temps. (Sleep(3) dans ton cas).
L'avantage d'un Sleep par rapport � une boucle sur QueryPerformanceCounter, c'est que �� ne bouffe pas de temps CPU pour rien.
J'ai pens� au Sleep que j'ai mis juste apr�s mes deux actions que je veux r�peter ttes les 3 ms mais celui-ci ne risque t'il pas de me bloquer le thread d'ex�cution des actions lanc�s auparavant durant ces 3 ms??::
Code:
1
2
3
4
5
6
7
8
9 for (int i=0;i++;10) { m_tunnelingPlugin->KillTunnelingPlugin(); m_tunnelingPlugin->BuildTunnelingPlugin(); Sleep(3000); }
Bonjour,
Dans ton cas, le mieux c'est de tout englober dans un thread.
En faisant ceci, tu ne risque pas de bloquer ton programme Principal.Code:
1
2
3
4
5
6
7
8
9 ThreadFunc(...) { while(CONDITION) { m_tunnelingPlugin->KillTunnelingPlugin(); m_tunnelingPlugin->BuildTunnelingPlugin(); Sleep(3000); } }
En esp�rant que �a t'aide.
Jag
Ok! Merci pour toutes vos r�ponses!!!!
>>PS: g cherch� sur msdn mais il m'a sorti que le code C++ pour .NET
Si l'OS est Windows c'est plut�t une question de d�veloppement Windows sp�cifique et non C++ en g�n�ral.
Tu peux effectivement utiliser SetTimer /KillTimer ( rechercher dans les API de base Windows et non pour NET ).
Tut, SetTImer � 3000 Ms �a peut parfaitement fonctionner... :wink:
sleep(3) va bloquer l'ex�cution pendant 3 ms mais si le code � ex�cuter dans la boucle prend par exemple 2 ms alors l'action que tu veux accomplir toutes les 3ms va en r�alit� s'eefectuer toutes les 5ms... il faudrait chronom�trer le temps mis pour ex�cuter le reste du code pour pouvoir r�ajuster le param�tre de la fonction sleep. Pour cela tu peux utiliser le couple QueryPerformanceFrequency/QueryPerformanceCounter (si tu es sous Windows, bein s�r)