Timer asynchrone

Résolu
cs_ToToL Messages postés 170 Date d'inscription vendredi 25 avril 2003 Statut Membre Dernière intervention 9 juillet 2008 - 21 mai 2006 à 01:27
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012 - 21 mai 2006 à 13:16
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

24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
21 mai 2006 à 12:26
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)

++
3
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
21 mai 2006 à 09:46
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

++
0
cs_ToToL Messages postés 170 Date d'inscription vendredi 25 avril 2003 Statut Membre Dernière intervention 9 juillet 2008
21 mai 2006 à 09:52
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
0
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
21 mai 2006 à 13:13
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="" />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
21 mai 2006 à 13:16
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="" />
0
Rejoignez-nous