Timer asynchrone [Résolu]

Signaler
Messages postés
170
Date d'inscription
vendredi 25 avril 2003
Statut
Membre
Dernière intervention
9 juillet 2008
-
Messages postés
246
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
11 mars 2012
-
Bonjour

J'ai besoin dans un programme en cour de création d'un timer asynchrone. je m'explique :

j'ai besoin d'executer des actions a des heures bien précise sauf que je ne veut pas qu'en attendant ces moments, je bloque mon programme.

Donc , comme sous win32 avec les events dans les fenetres de dialogues, j'aimerai savoir si cela existe avec des timers et sous linux car je programme sous linux.

J'ai fouillé un peut partout sur le net sans trouver vraimetn ce que je veux , peut etre parce que ca n'existe pas.

Merci
    ToToL

5 réponses

Messages postés
233
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 juillet 2008

si ton truc doit etre plus précis, tu peux faire :

- calcule le temps en milliseconde à attendre
- avec ton nombre de milliseconde, tu trouves le nombre de secondes entieres à attendre
- tu fais ton sleep du nombre de seconde
- il te reste à patienter pour le nombre de millisecondes restantes.là tu peux faire avec une boucle, tant pis pour le CPU, ça va pas durer des heures (au maximum juste un peu moins d'une seconde)

++
Messages postés
233
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 juillet 2008

Peut-être qu'utiliser des thread peuvent aider.
Avec ça tu pourrais lancer un thread pour chaque action que tu veux executer en passant comme param au thread l'heure d'execution de la commande.

- tu lances ton thread
- puis dans ton thread tu fais patienter jusqu'à ce qu'à ce que ça soit l'heure qu'il te faut. (avec une fonction genre sleep, pas une boucle infinie sinon tu vas bouffer le CPU)
- puis un fois que c'est fait tu fais continuer l'execution de ton thread (l'action en gros)

ici un exemple sous linux avec des thread
http://www.cppfrance.com/codes/THREADS-SOUS-LINUX_19379.aspx

++
Messages postés
170
Date d'inscription
vendredi 25 avril 2003
Statut
Membre
Dernière intervention
9 juillet 2008

j'avais penser a cela mais je me demandait si la fonction sleep était assez précise.
mais surtout c'est que ce n'est pas tres pratique , mais bon je vais faire avec.

Merci
Messages postés
246
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
11 mars 2012

n'est-il pas possible d'essayer avec un signal ? Je ne me rapelle plus le nom, sur le coup, mais yen a pas un qui permet d'entrer dans une fonction au bout d'un temps bien précis ?

<hr size="2" width="100%" />  Qui ne tente rien...

  Ne risque pas d'avoir grand chose !!!

<hr siz="" />
Messages postés
246
Date d'inscription
mercredi 5 janvier 2005
Statut
Membre
Dernière intervention
11 mars 2012

si ca y est j'ai le nom : le sigalrm.

si j'ai bien compris le fonctionnement un truc du genre :

signal(SIGALRM, alarme);
alarm(5);

avec void alarme(int sig);

va te déclencher la fonction alarme au bout de 5 secondes !

Mais je ne sais pas l'avantage / sleep (ou l'inconvenient d'ailleurs)

<hr size="2" width="100%" />  Qui ne tente rien...

  Ne risque pas d'avoir grand chose !!!

<hr siz="" />