我是否需要并行化或多线程化我的应用程序

Bil*_*ean 1 c++ hardware

我对这些术语thread以及core它们与我在家用计算机上编写和执行的程序的关系有一些概念上的混淆.假设我在我的机器上运行以下程序,这是一个带有四个线程的四核主板

#include <iostream>

using namespace std;

int main()
{
    int long long num = 1E15;
    while(num--)
    {
        cout << num << endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我希望这个程序使用多个核心,我的程序是否需要支持多线程,还是需要并行化?或者在我的情况下是否相同,因为我的CPU每个核心有1个线程?

NPE*_*NPE 6

核心是硬件概念.松松地 ,当我们说一个CPU具有n核心,我们的意思是它可以做到n在同一时间的事情.

线程是一个软件概念.它指的是可由操作系统调度程序独立管理的一系列指令.通常,进程由一个或多个线程组成,但在某些操作系统中,进程和线程之间的区别有些模糊.

在任何给定的时刻,核心要么空闲要么正在执行线程.

您的示例目前只有一个线程.因此它不能使用多个核心.要使用多个核心,您需要引入多个线程或多个进程.这可以描述为并行化您的程序,但值得注意的是,使用多个线程/进程并不是并行化程序的唯一方法.