我在 C++ 中运行一个简单的无限循环:
int main() {
for (;;) {}
}
当我编译并运行它时,程序占用了我 100% 的 CPU。为什么会这样?我在 Macbook Pro 上使用 g++ 4.7。
最佳答案
CPU 会尽可能快地运行给定的代码。如果没有其他重要的事情发生,操作系统将尽可能多地为需要它的进程提供 CPU 时间。如果您要同时运行这些进程中的两个,它们每个将获得大约 50% 的 CPU 时间。 (请注意,如果你有一个以上的核心,用于描述 CPU 使用的术语会有点模糊,几乎所有现代 CPU 都是这样。如果你有一个四核系统,上面的循环将占用一个核心的 100%,或 25总体百分比。)
不执行 I/O(或以其他方式等待任何外部操作)的计算绑定(bind)程序都以相同的方式运行。
关于c++ - 为什么一个空的无限循环会占用我的整个 CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12134757/