Exécutez le code toutes les 30 secondes

J’ai un serveur qui doit recueillir des informations de ses clients. L’info est un nombre aléatoire que je stocke dans un tableau de fréquence. Le serveur doit indiquer à tous les clients le numéro le plus fréquent, mais toutes les 30 secondes environ. Les clients qui ont envoyé ce numéro sont déconnectés et font de la place pour les nouveaux. Ainsi, de nouveaux numéros sont ajoutés dans le tableau.

Comment faire en sorte que le serveur vérifie toutes les 30 secondes et envoie le message?

Je travaille en C sous Unix, pas en C ++.

Essayez la logique de pseudocode suivante:

while (TRUE) { //this can be your main loop //get current time and if more than 30 seconds after last send { //get most frequent number //inform clients //get current time and store timestamp as last send } 

}

Utiliser l’alarme ()

  void handler(int signum) { ///your logic alarm(30); } int main(void) { signal(SIGALRM, handler); alarm(30); getchar(); return 0; } 

Essayez d’utiliser le temporisateur POSIX par processus: http://man7.org/linux/man-pages/man2/timer_create.2.html Dans la section exemples, vous trouverez un exemple appelant un minuteur toutes les 100 ns.

vous pouvez simplement utiliser ces fonctions:

  int nanosleep(const struct timespec *req, struct timespec *rem); or usleep(microseconds); 

ces fonctions font dormir le programme pendant x secondes

exemple:

 while(1) { function(); //function to run each 30 sec usleep(30*1000000); }