2013-03-27 40 views
1

我对术语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个线程?

+4

这个程序是一个非常糟糕的例子,因为它不能并行化(即使它可能会完全无用,因为性能是I/O绑定的)。 – leftaroundabout 2013-03-27 10:04:02

+0

您是否对这个主题做过任何研究?我知道在过去的几天里在这里提出了类似的问题。 – 2013-03-27 10:05:21

回答

6

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

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

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

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

1

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

相关问题