gpt4 book ai didi

c++ - 为什么一段简单的 C++ 代码会消耗大量 Raspberry 的 CPU?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:49:58 24 4
gpt4 key购买 nike

我正在尝试使用多线程技术重写我的 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;
}

CPU 使用率: enter image description here

最佳答案

在阅读了你们所有的评论之后,我搜索了 kworker 并发现它主要执行 I/O,这确实像 Mat 所说的那样消耗了我的大量 CPU。现在,在使 I/O (printf) 脱离循环后,一切似乎都正常了,仅在 1 个内核上运行,非常感谢大家对我的帮助!

关于c++ - 为什么一段简单的 C++ 代码会消耗大量 Raspberry 的 CPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52639484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com