当我使用 gcc 运行这段代码时,
$ cat eatup.c
#include<stdio.h>
#include<stdlib.h>
int main() {
int i = 0;
while(1) {
i++;
}
}
$
CPU 图是这样的:
我不知道为什么 CPU 核心使用率会出现交叉。
This might be a bit OS dependent (scheduling processes on the cores), but is there anything that could explain why the switch happened (as shown in the first screenshot)? Any guesses?
事实证明,这些开关并不少见。这是启动后系统监视器的屏幕截图(Ubuntu 10.04)
Full Size
最佳答案
可能发生了什么,操作系统还有两个其他进程需要运行。第一个获得了第二个核心(因为您在第一个上)。第二个导致你的程序失去它的 CPU 核心。然后第一个线程释放了它的核心,并且您的程序被分配给它。
我不是 linux 专家,但通常可以告诉操作系统您有一个想要运行的首选内核。
关于c - 为什么我运行这个 C 代码时 CPU 核心使用率有一个开关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3790115/