为什么空的无限循环使用我的整个CPU?

Jef*_*rey 2 c++ performance

我在C++中运行一个简单的无限循环:

int main() {
  for (;;) {}
}
Run Code Online (Sandbox Code Playgroud)

当我编译并运行它时,程序消耗100%的CPU.为什么会这样?我在Macbook Pro上使用g ++ 4.7.

Gre*_*ill 10

CPU尽可能快地运行它们给出的代码.如果没有其他感兴趣的内容,操作系统将尽可能多地为想要它的进程提供CPU时间.如果您同时运行其中两个进程,它们将分别获得大约50%的CPU时间.(请注意,如果您有多个核心,用于描述CPU使用率的术语会有点模糊,就像几乎所有现代CPU一样.如果您有四核系统,上述循环将占用一个核心的100%,或25 % 总体.)

不执行I/O(或以其他方式等待外部任何操作)的计算绑定程序都以相同的方式运行.

  • CPU完全按照你的要求去做,仅此而已.:) (8认同)
  • 如果CPU足够聪明,不能执行没有辅助效果的代码,那么你就可以解决停机问题. (3认同)