【发布时间】:2013-08-05 09:27:29
【问题描述】:
我有两个程序应该做同样的事情,但略有不同。两者都有无限的游戏循环,除非用户以某种方式停止游戏,否则它们会永远运行。其中一个程序的游戏循环被实现并渲染了一些东西,另一个游戏循环是空的并且什么也不做(只是听用户停止)。
当我打开任务管理器查看资源使用情况时,我发现带有空循环的程序使用了 14% 的 CPU,而实际绘制到屏幕上的程序使用了大约 1-2%。
我对这个问题的猜测如下:
我比较了这两个程序的代码并寻找差异,但差异并不大。然后我想到,渲染到屏幕的循环可能会受到其他因素的约束(比如向屏幕发送像素,刷新率?)所以在 CPU 完成它的事情之后,它会让那个线程进入睡眠状态,直到其他事情完成。但是由于其他程序几乎什么都不做,而且什么都不做真的很容易,CPU 永远不会让那个线程进入睡眠状态,而是继续运行。我缺乏知识来确认这是否是原因,所以我问你。这是发生这种情况的原因吗? (额外问题)如果是这样,为什么 CPU 会停止在 14% 左右,而不是一直到 100%?
谢谢。
【问题讨论】:
-
也许空循环没有延迟间隔,而这与绘图有什么关系?