Bonjour,
malgré mes recherches, je ne trouve pas ce que je souhaite.
Je pense que c'est quelque chose d'assez simple (d'où le fait que je ne trouve rien ?).
Je voudrais écrire un programme qui appelle toutes les 10 ms une fonction.
Je me suis renseigné sur les fonctions timeBeginPeriod, timeEndPeriod ... et j'ai une précision de 1ms (cool !).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 void traitement () { // je fais mon traitement } void main () { while (1) { // je fais des trucs // si je m'aperçois que 10ms se sont écoulées j'appelle traitement() // je reprends mes trucs de la boucle } }
Comme vous l'aurez remarqué, je suis sous le système Windows.
j'ai essayé ce code :
Cela fait ce que je veux (à savoir appeler la fonction toutes les xx ms), mais bêtement je pensais qu'en remplaçant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #include <stdio.h> #include<windows.h> #include<mmsystem.h> void CALLBACK TimeProc(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2) { printf ("CALLBACK TRAITEMENT\n"); } void main() { UINT uDelay = 100; UINT uResolution = 1; DWORD dwUser = NULL; UINT fuEvent = TIME_PERIODIC; MMRESULT FTimerID; timeBeginPeriod(1); FTimerID = timeSetEvent(uDelay, uResolution, TimeProc, dwUser, fuEvent); if(FTimerID == NULL) { printf("Failed to generate multimedia timer.\n"); } sleep(1000); timeKillEvent(FTimerID); timeEndPeriod(1); }
le sleep(10000) par ma boucle while j'aurais mon résultat. Pas du tout !
Si vous pouvez donc m'éclairer ? Je ne crois pas avoir besoin de thread, mais plutôt d'un timer
(oui j'ai cherché pour ça) qui me dirait est-ce que mon temps est écoulé et dois-je appeler ma fonction ?
Merci,
Cordialement.
Partager