Bonjour,

Pour un projet, j'ai besoin d'implémenter des timers pour s'assurer que certaines boucles ne durent qu'un certains temps. Voici mon code :

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
27
28
29
30
31
32
33
34
35

Timer.h :

class Timer
{

private:
    clock_t m_fin;
    
public:
    Timer();
    ~Timer();
    void armerTempo(unsigned long int duree);
    bool tempsEcoule();

};

Timer.cpp :

#include "Timer.h"

Timer::Timer() {}

Timer::~Timer() {}

void Timer::armerTempo(unsigned long int duree)
{
    m_fin = clock() + duree * CLOCKS_PER_SEC;
}

bool Timer::tempsEcoule()
{
    return (clock()<m_fin) ? false:true;
}
Ce code fonctionne très bien quand je teste sur des boucles d'attente (while(!t.tempsEcoule()))) pour des durées faibles (qqs secondes). Seulement voilà, j'ai besoin d'un timer de 24 heures (soit 86400 secondes), à ce moment-là, la boucle s'arrête instantanément. En débuguant, j'ai remarqué que c'était dû à la variable m_fin (de type clock_t) qui prend une valeur négative à partir d'une certaine valeur de m_duree (un peu plus de 10000).

Je voudrais savoir si il y avait un moyen pour augmenter "la portée" ?

Je vous remercie.