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