首页 > 解决方案 > 在没有另一个线程的情况下定期运行代码

问题描述

这是我拥有的代码:

while(1)
{
   if (fmod(get_elapsed_time(), 3.0) == 0.0)
   {
       printf("Hello World\n");
   }
}

get_elapsed_time函数返回a double,它是自程序启动以来经过的时间,以秒为单位,小数点后为毫秒。

所以这段代码应该每 3 秒打印一次 hello world,但它没有,我不知道为什么。

标签: ctime

解决方案


浮点数不准确。跟踪您上次打印的时间,当当前时间 >= 3 秒时,是时候打印更多内容了。

就像是

float last_print_time = get_elapsed_time();
for(;;) {
  float current_time = get_elapsed_time();
  if (current_time - last_print_time >= 3.0) {
    printf("Beep!\n");
    last_print_time = current_time;
  }
}

推荐阅读