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

时间:2013-03-27 10:00:47

标签: c++ hardware

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

#include <iostream>

using namespace std;

int main()
{
    int long long num = 1E15;
    while(num--)
    {
        cout << num << endl;
    }
    return 0;
}

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

2 个答案:

答案 0 :(得分:6)

Cores是硬件概念。 Loosely speaking,当我们说CPU有n个内核时,我们的意思是它可以同时执行n个内容。

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

在任何给定的时刻,核心处于空闲状态或正在执行线程。

您的示例目前只有一个帖子。因此它不能使用多个核心。要使用多个内核,您需要引入多个线程或多个进程。这可以被描述为并行化您的程序,尽管值得注意的是使用多个线程/进程is not the only way来并行化程序。

答案 1 :(得分:1)

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