为什么一段简单的C++代码会占用我的Raspberry的大量CPU?

hoa*_*o27 5 c++ multithreading cpu-usage

我正在尝试使用多线程技术重写我的C++项目,以使其尽可能多地消耗CPU(在它仅在1核上运行之前).因此,为了测试多线程是否可以在许多内核上运行一段C++代码,我尝试在下面编写一个非常简单的测试,单线程和另一个具有多线程的版本进行比较.但是,当我在Raspberry Pi上运行它时收到的结果是,即使是通常的代码也消耗了很多CPU并运行了超过1个核心.怎么可能?我认为它应该只运行1核心,因为它是如此简单!

所以它让我困惑,因为有了这些结果,我无法证明使用多线程可以使我的代码在多个核心上运行,因为不使用它我得到相同的结果:(

#include <iostream>
#include <thread>
#include <math.h>
//#include <mutex>

using namespace std;
//mutex mtx;


int pl(int a){
    return a +=35;
}



int main(int argc, char *argv\[\])
{

    int num = 20;
    while(1){
        int ai = pl(num);
        printf("result num is %d\n", ai);
    }

    cout << "Main: program completed" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

CPU使用率: 在此输入图像描述

Ada*_*lík -1

由于无限的 while 循环,这对于 CPU 来说可能有点过分了。高内存可能是由大量控制台输出或堆栈使用引起的。