1

我必须在一定时间内运行一个循环。我知道以下方法可以做到这一点。

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

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

4

2 回答 2

2

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

于 2015-08-01T10:03:49.277 回答
0

仅当您想燃烧 100% CPU 时才可以。否则,您应该添加一个库调用,让您的循环花费部分或大部分时间休眠,例如 nanosleep,并将延迟调整为适合您的应用程序的粒度。

于 2015-08-02T03:18:37.410 回答