为什么游戏循环需要睡眠?
答
操作系统通常会在任何给定的内核上同时运行大量线程/进程,并且调度程序必须决定每个进程得到多少处理器时间。如果线程连续运行(没有睡眠),它可能最终占据可用处理器资源。
有时这是合适的,例如,用于计算密集型应用。但是,大多数程序不应该这样做。特别是对于游戏,瓶颈通常是图形或IO性能,而不是可用的CPU资源(即,您的程序最终可能会浪费处理器时间,同时等待其他内容追赶)。
让您的线程在每次迭代中短暂休眠一段时间,释放一些处理器时间。这可以让调度程序为其他线程/进程分配时间,并使系统运行得更好。从本质上讲,睡眠时间是为了系统的其他部分,而不是你自己的程序。
这样的睡眠时间并没有真正的“正确”量。一般来说,你的线程应该尽可能长时间地睡觉而不会影响程序的性能。一个很好的方法是确定游戏所需的帧速率,然后计算每帧之间可以承受的延迟量。
每次检查主循环时,检查自上一帧以来是否已经过去了这段时间。如果不是,睡一会儿,然后在下一次循环时再试一次。
因为它像其他人一样累了...欢迎来到SO。 *请为您的问题添加更多背景*。有了这些信息,将很难为您提供相关提示。一个典型的例子是,你有某种交互/动画会运行得如此之快,以至于用户在没有睡眠声明的情况下将无法遵循。 – reto