Ejecutar código cada 30 seg.

Tengo un servidor que necesita recostackr información de sus clientes. La información es un número aleatorio que almaceno en una matriz de frecuencia. El servidor debe indicar a todos los clientes el número más frecuente, pero cada 30 segundos aproximadamente. Los clientes que enviaron ese número se desconectan y dejan espacio para los nuevos. Por lo tanto, se agregan nuevos números en la matriz.

¿Cómo hago para que el servidor realice la comprobación cada 30 segundos y envíe el mensaje?

Trabajo en C bajo Unix, no en C ++.

Pruebe la siguiente lógica de pseudocódigo:

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 } 

}

Usar alarma ()

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

Intente usar POSIX por temporizador de proceso: http://man7.org/linux/man-pages/man2/timer_create.2.html En la sección de ejemplos hay un ejemplo que invoca un temporizador cada 100 ns.

simplemente puede utilizar estas funciones:

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

Estas funciones hacen que el progtwig se duerma durante x segundos.

ejemplo

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