我对术语thread
和core
存在一些概念上的混淆,以及它们与我在家用计算机上编写和执行的程序的关系。假设我在我的机器上运行以下程序,quad-core motherboard有四个线程
#include <iostream>
using namespace std;
int main()
{
int long long num = 1E15;
while(num--)
{
cout << num << endl;
}
return 0;
}
如果我希望这个程序使用多个核心,我的程序是否需要支持多线程,还是需要并行化?或者在我的情况下是否相同,因为我的CPU每个核心有1个线程?
答案 0 :(得分:6)
Cores是硬件概念。 Loosely speaking,当我们说CPU有n
个内核时,我们的意思是它可以同时执行n
个内容。
Threads是一个软件概念。它指的是可由操作系统调度程序独立管理的一系列指令。通常,process由一个或多个线程组成,但在some operating systems中,进程和线程之间的区别有些模糊。
在任何给定的时刻,核心处于空闲状态或正在执行线程。
您的示例目前只有一个帖子。因此它不能使用多个核心。要使用多个内核,您需要引入多个线程或多个进程。这可以被描述为并行化您的程序,尽管值得注意的是使用多个线程/进程is not the only way来并行化程序。
答案 1 :(得分:1)
通常,multithreading
强制操作系统使用多个CPU核心。但这始终是操作系统的依赖。 OS的调度程序负责根据其策略分发线程。