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

do I need to parallelize or multithread my application

本文关键字:多线程 我的 应用程序 并行化      更新时间:2023-10-16

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

#include <iostream>
using namespace std;
int main()
{
    int long long num = 1E15;
    while(num--)
    {
        cout << num << endl;
    }
    return 0;
}

如果我想让这个程序使用多个内核,我的程序需要支持多线程还是需要并行化?或者在我的情况下是一样的,因为我的CPU每核有一个线程?

内核是一个硬件概念。粗略地说,当我们说一个CPU有n个核心时,我们的意思是它可以同时做n个事情。

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

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

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

通常,multithreading强制操作系统使用多个CPU核心。但这总是与操作系统有关。操作系统的调度程序负责根据其策略分发线程。