6
votes

Comment puis-je lancer une fonction à une heure spécifique en C ++?

est possible d'appeler une fonction à une heure spécifique en C ++? Par exemple, je voudrais lancer la fonction DOIT () lorsque NUMBER_OF_ELAPSED_MILLISECONDS_SINCE_AAPPLICATION_START = X.

Une solution croisée serait idéale.


1 commentaires

lancer un nouveau fil. sommeil (number_of_elapsed_milliseconds_since_aplication_start); DOIT ();


3 Réponses :


3
votes

en pure C ++ probablement pas, vous aurez besoin d'un code spécifique du système d'exploitation. Mais vous pouvez utiliser un wrapper OS indépendant indépendant de la plate-forme, comme QT (bien que cela puisse être un peu de surcadrement pour votre problème assez simple).

edit: La chose la plus simple que vous puissiez faire, bloque activement le programme dans une boucle, qui sondre constamment l'heure actuelle, jusqu'à ce que la date limite soit atteinte, mais ce n'est probablement pas une solution très utile. . Donc, sans threads ou une minuterie entraînée par des événements (comme chaque système d'exploitation devait avoir), vous n'allez pas très loin.


2 commentaires

Je pense que chaque système d'exploitation majeur possède la fonction , qui est vraiment tout ce dont vous avez besoin pour le code non standard.


@MOOINGDUCK Eh bien, bien sûr avec l'avènement de C ++ 11, ma réponse n'a pas beaucoup de sens.



3
votes

Faites un fil, mettez-le à dormir jusqu'à ce moment-là, et après le sommeil, faites-la exécuter cette fonction.


1 commentaires

+1, bien que je puisse noter que nous n'utilisons pas le système d'exploitation en temps réel, le thread ne se réveillera pas exactement au temps prévu, ce sera un peu désactivé, quelle quantité dépend de la charge de la machine actuelle.



1
votes

C'est ce qui est considéré comme une fonction "rappel" ou un "auditeur". Plus d'informations sur la mise en œuvre On peut trouver ici: http://www.cprogramming.com/Tutorial /Function-Poingers.html

espère que cela aide.


0 commentaires