在一定时间内运行循环的最佳方法

时间:2015-08-01 09:30:55

标签: c linux loops timing userspace

我必须在一段时间内运行一个循环。我知道以下方法。

get start time;
while(1)
{
   getcurrenttime;
   if(start time + time to run >= current time)
      break;
   else 
      do what ever you want.
}

可以吗?或任何其他更好的方法来做到这一点?

2 个答案:

答案 0 :(得分:1)

我建议你在循环内部引入任何“Thread.Sleep”,以防止处理器的使用和能量消耗,提高其他进程和操作系统的性能。如果你想等一个修复时间你可以直接使用系统线程睡眠,否则如果你想等待一个未定义的时间你可能有一个带有退出条件的循环,如最大时间或其他条件表达式,但你必须调整等待时间小睡眠值。

答案 1 :(得分:0)

只有在想要刻录100%CPU时才可以。否则,您应该添加一个库调用,让您的循环花费一些或大部分时间休眠,例如nanosleep,并将延迟调整到适合您应用程序的粒度。