时间逼近算法?

时间:2011-08-15 15:50:56

标签: c algorithm time sleep

任何人都可以了解如何为目标时间创建一种方法算法;睡眠(x),其中x最初很大并且随着目标时间的临近而减小?

2 个答案:

答案 0 :(得分:2)

这取决于你的约束,但一个简单的解决方案是总是将剩余时间除以2然后再睡觉。它具有对数复杂性,很好。

OS通常只保证10 ms的粒度,因此当时间低于20 ms时停止休眠。

答案 1 :(得分:1)

void sleep(unsigned long howLong, unsigned decrement)
{
   if (howLong == 0)
      return;
   if (decrement < 2)
   {
      Sleep(howLong);
      return;
   }

   unsigned long delay = howLong / decrement;
   while (delay)
   {
      Sleep(delay);
      delay /= decrement;
   }
}