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
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.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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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...![]()
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)
Partager