2010-11-01 9 views
0

Je souhaite appeler une fonction de la classe business toutes les 2 heures. Je n'arrive pas à l'implémenter en C/C++ sans utiliser de boucle while. Mon problème est que je ne peux pas utiliser while (1) car cela ne renvoie pas le contrôle pour une exécution ultérieure.comment implémenter le temporisateur en C/C++

Tout pointeur dans ce qui concerne wud être utile .... :)

thnaks

+1

La réponse dépend de la plateforme sur laquelle vous vous trouvez. Linux? Les fenêtres? Autre chose? –

+0

Juste curieux. Que fait votre programme pendant 2 heures s'il n'est pas déjà implémenté en boucle d'événement? –

+0

J'essaie de réaliser cela sur Mac OS X et en fait c'est un processus d'arrière-plan qui fonctionne toujours en backgroung tant que votre système est en place. –

Répondre

0

Je en C ordinaire, ai envisagé d'utiliser les fonctions alarm(2) ou setitimer(2). Alternativement, engendrer un fil et faire l'attente à partir de là. Si vous décidez des routes d'alarme ou de setitimer, gardez à l'esprit que vous devrez écrire des gestionnaires de signaux et que vous aurez besoin d'une boucle de répartition pour noter qu'il est temps de faire les appels de maintenance périodiques, car cela est considéré comme une mauvaise pratique. faire un certain nombre de choses à l'intérieur d'un gestionnaire de signal.

0

Pour une solution générale, vous pouvez commencer à un fil, qui envoie un certain message au thread principal au bout de 2 heures.

Pour linux, vous pouvez utiliser ceci:

http://linux.die.net/man/3/alarm

puis gérer SIGALRM

Questions connexes