如何使我的程序每给定时间只迭代一次(如1s)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使我的程序每给定时间只迭代一次(如1s)?相关的知识,希望对你有一定的参考价值。

比如说,我有一个for循环,它从一个.txt文件中逐行读取指令,我想做的是让程序每隔一秒左右执行一次这些指令。我怎样才能做到这一点呢?

下面是我的循环的代码。

  for(j = 0; j < PC; j++)              
    txtfilepointer = fopen(listWithTxtFilesToRead[j].name, "r");

    while (fscanf(txtfilepointer, "%c %s", &field1, field2) != EOF ) 

      // here it should be executing the given instruction every second or so...

      printf("whatever the instruction told me to do");
    
  

请忽略变量名,这只是为了简化。

答案

让程序每隔一秒左右执行一次这些指令。

让它等到规定的时间过去。

假设你想让程序等待一秒或多秒(而且你是在POSIX系统上,比如Linux,它带来了 sleep())你可以这样做。

#include <time.h> /* for time() */
#include <unistd.h> /* for sleep() */

#define SECONDS_TO_WAIT (3) 

...

  
    time_t t = time(NULL);

    /* Instructions to execute go here. */

    while ((time(NULL) - t) < SECONDS_TO_WAIT)
    
      sleep(1); /* Sleep (wait) for one second. */
    
  

以上是关于如何使我的程序每给定时间只迭代一次(如1s)?的主要内容,如果未能解决你的问题,请参考以下文章

如何使我的类可迭代,以便我可以使用 foreach 语法?

按下相同的控件时按下 segue,使我的应用程序崩溃

Android Espresso - 如何为所有测试只运行一次设置

如何使我的程序与 DEP 兼容?

如何为给定的代码编写递归关系

如何使我的命令行在具有扩展名(.sh)和名称如“weird.sh.sh.sh”的文件上工作