c++ - 为什么一个空的无限循环会占用我的整个 CPU?

标签 c++ performance

我在 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/

相关文章:

java用代理打开url需要很长时间

c++ - 什么时候可以将模板专门用于私有(private)成员类型?

c++ - 将 vector 拆分为多个的最有效方法

mysql - 什么是 MySQL 表计数与性能问题

sql - 大表的问题(没有可用的主键)

java - 根据我们需要调用多少页来并行化 while 循环?

c++ - 如何将 std::string 放入 boost::lockfree::queue (或替代方案)?

c++ - Boost Log 清除日志文件

c++ - 为什么我们在建库的时候要设置符号链接(symbolic link)呢?

Java:创建 LinkedList 并将其转换为 ArrayList 进行排序是否有意义?