Bonjour,
Je voudrais faire appel à une fonction périodiquement, par exemple toutes les 10s.
Comment dois-je m'y prendre?
Merci pour vos réponse.
Version imprimable
Bonjour,
Je voudrais faire appel à une fonction périodiquement, par exemple toutes les 10s.
Comment dois-je m'y prendre?
Merci pour vos réponse.
Ça dépend du type d'appli et du système.
Pour une appli fenêtrée sous Windows, un simple SetTimer() suffit généralement...
Je travaille sous linux. c'est une application basique. Je souhaite juste créer une fonction qui execute périodiquement une autre fonction.
Tu veux dire, un bète programme console ?
Le programme a-t-il besoin de faire autre chose ou peut-il ne rien faire d'autre qu'appeler la fonction périodiquement ?
non, c'est une fonction parmi d'autres à l'interieur du programme. Donc le programme fait aussi autre chose
Dans ce cas, je pense que tu n'auras pas vraiment le choix, il faudra y aller en multithread.
en multithread? c'est à dire ?
dsl pour ces questions, je suis pas encore tres calé en prog c
n'est-il pas possible d'utiliser qc comme timeout ?
qc ?
Connais pas.
Quant au multithread, c'est un mode de programmation permettant d'avoir deux choses qui se produisent "en même temps".
http://emmanuel-delahaye.developpez.com/pthreads.htm
Est-tu sûr d'avoir fait la bonne analyse ? Quelle est la nature de ton projet ?
qc = quelque chose
ok, donc il faut que je crée plusieurs processus
On n'a jamais dit plusieurs processus, on a dit plusieurs threads.
Et parce que la programmation interruptible n'est pas la même chose que la programmation multithread ou la programmation événementielle.
Donc je dois créer un thread qui s'execute en parallèle du processus principal.
Et pour l'appel périodique ?
je crée dans le thread une boucle dans laquelle je mets un sleep() et l'appel à la fonction?
Tu veux exécuter une fonction mais pendant ce temps le programme doit faire également autre chose c'est ça? Alors tu crées un thread qui exécute le code de ta fonction. Maintenant, tu veux également que ta fonction soit appelée périodiquement, alors tu crées un timer qui émet un signal toutes les n secondes et chaque fois que tu recois le signal, tu lances le thread. Sous UNIX la fonction qui permet de créer un timer est alarm (plus les fonctions qui vont avec). Sous Windows c'est SetTimer.
Mais arrêtez avec SetTimer() dans une application console!
Et signal() fait de la programmation interruptible, on n'est plus du tout dans le même domaine.
Pour moi, la solution la plus simple est le thread avec une boucle contenant un sleep(), si une précision extrême n'est pas requise...
De quel domaine parles-tu ????
Le titre et la fonctionalité demandée étant : "appel périodique de fonction", d'une part ce n'est pas rattaché à un domaine, d'autre part cela tombe EXACTEMENT sous la fonctionalité décrite par un timer, non ???????????????????
En quoi est-ce que la "programmation interruptible" serait-elle PIRE que le "multi-threading" (qui au passage est devenu populaire car Windows ne savait pas gérer plusieurs processus en parallèle...) (jusqu'il y a 7 ou 8 ans, je n'ai JAMAIS entendu parler de thread sous unix/linux, car ces OS savent gèrer le parallèlisme, ou en tous cas le multi-processus ET les signaux...)...