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