je voudrais qu'un programme s'exécute toutes les 15 minutes, comment dois je m'y prendre ?
- mettre mon programme dans le Task Scheduler de windows ?
- faire une boucle contenant une fonction sleep(15) ?
- faire un thread ?
qu'en pensez vous ?
je voudrais qu'un programme s'exécute toutes les 15 minutes, comment dois je m'y prendre ?
- mettre mon programme dans le Task Scheduler de windows ?
- faire une boucle contenant une fonction sleep(15) ?
- faire un thread ?
qu'en pensez vous ?
Pareil et mauvais forum.
pour qu'un programme exécute une fonction toutes les 15 minutes, j'ai envisagé plusieurs solutions :
- exécuter le programme (contenant la fonction) toutes les 15 minutes via le Task Scheduler de winXP (ou autre service du style)
- faire une boucle dans le programme qui exécute la fonction toutes les 15 minutes
- pour éviter que cette boucle ne "givre" le programme, mettre cette boucle dans un thread
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while (true) { sleep(15); // fait une pause de 15 minutes ma_fonction_a_executer_toutes_les_15_minutes(); }
mes connaisances en c++ n'étant pas très appronfondies, je me disais qu'il y avait bien quelqu'un sur ce forum qui pourrait m'en proposer une meilleure
merci de bien vouloir répondre de manière constructive, tout le monde a bien du commancé un jour
Salut !
Développé ainsi, c'est mieux il y a plus info, question trop concise = réponse de même
Si la boucle est la SEULE fonctionnalité de ton application, tes solutions 2 et 3 ont le même effet, car quand on crée une application Windows, un Thread principal est automatiquement créé.
Ensuite tes demandes sont différentes dans le premier cas, tu veux exécuter une application tous les 1/4d'h dans la seconde, tu veux que l'application exécute une fonction toutes les 15minutes... Ce n'est pas strictement équivalent
Dans le premier cas, c'est la solution 1 qui correspond à ta demande, dans le second cas, c'est la 2 ou 3...
Ensuite, il faut se poser plusieurs questions :
1°) Cette fonction est-elle la seule fonctionnalité de ton application ?
Si oui, tu peux éliminer la solution 3 car elle est équivalente à la solution 2, en étant en même temps plus gourmande en mémoire et en CPU (un thread supplémentaire, donc plus de mémoire pour le stocker, et plus de temps CPU, car il faut tester un thread supplémentaire à chaque boucle du multithreading de Windows), même s'il est vrai que ces différences sont négligeables
Si non, c'est la solution 3 qui est à retenir, ainsi, ta fonction sera lancé ssi elle est nécessaire : si l'application est arrétée, alors la fonction ne sera pas lancé, elle n'est pas nécessaire, car ça demanderais de lancer toute l'application pour une simple fonction...
Si l'application est lancé, tu es sûr que la fonction sera exécutée sans freezer ton application
2°) Quel rapport préfères-tu :
Dans le cas 1, ton application sera lancée même si sa dernière exécution s'est mal placée... Mais si le task Schudler est désactivé, ou rencontre un problème, alors l'application ne sera plus lancée
Dans le cas 2, si jamais ton application rencontre une exception non gérée, alors l'application avortera, et la fonction ne sera plus lancée. D'un autre côté, ton application est indépendante de toute interaction extérieure...
À toi de voir
un tout grand merci pour ces éclaircissements
au vu de mes besoins je vais opter pour la solution numéro 2
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager