1

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

#include <iostream>

using namespace std;

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

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

4

2 回答 2

6

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

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

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

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

于 2013-03-27T10:12:47.757 回答
1

通常,multithreading强制操作系统使用多个 CPU 内核。但这始终取决于操作系统。操作系统的调度程序负责根据其策略分配线程。

于 2013-03-27T10:06:09.803 回答