每30秒执行一次代码

时间:2014-01-16 08:37:41

标签: c

我有一台需要从客户端收集信息的服务器。信息是一个随机数,我存储在一个频率数组中。服务器应告诉所有客户最常用的号码,但每30秒左右。发送该号码的客户端将断开连接并为新号码腾出空间。因此,数组中会添加新数字。

如何让服务器每30秒进行一次检查并发送消息?

我在Unix下工作,而不是C ++。

4 个答案:

答案 0 :(得分:2)

使用闹钟()

 void handler(int signum) {
    ///your logic
 alarm(30);
 }

 int main(void) {

  signal(SIGALRM, handler);
  alarm(30);

  getchar();

  return 0;
}

答案 1 :(得分:0)

尝试使用POSIX per-process计时器: http://man7.org/linux/man-pages/man2/timer_create.2.html 在示例部分中,有一个示例,每100秒调用一次计时器。

答案 2 :(得分:0)

你可以简单地使用这些功能:

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

这些函数使程序休眠x秒

例如:

while(1) {

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

答案 3 :(得分:-2)

尝试以下伪代码逻辑:

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
   }

}