并行编程澄清和并发编程

时间:2014-06-02 06:22:36

标签: concurrency parallel-processing terminology

我一直在阅读并行和并发编程,有两件事我仍然没有找到答案并且仍然感到困惑。

1)在某些地方,我读到并行编程允许通过利用多个CPU同时执行多个进程,而在其他地方我读到它通过利用多个核来实现这一点。究竟哪个是对的?据我所知,核心是CPU的一部分,因此两个定义都不可能有效(除非我遗漏了一些东西)。

2)我对并发编程的工作方式有了基本的了解,但我不明白为什么两个进程并发执行而不是顺序执行会更快。例如,如果有两个线程由四个计算组成,需要相同的时间来处理:

线程A:A1 A2 A3 A4

线程B:B1 B2 B3 B4

线程的并发执行可能导致以下执行:A1 B1 A2 B2 A3 B3 A4 B4。但是,如果顺序执行两个线程,那将会如何更快:A1 A2 A3 A4 B1 B2 B3 B4?两种执行方法都需要八次总计算,这意味着总时间是相同的。

1 个答案:

答案 0 :(得分:0)

在双核(multi-core)CPU(或两个单核CPU)上,每个线程可以在单独的核心上运行。假设两个线程之间不需要同步,它们可以同时运行(即每个核心以相同的频率运行4个步骤 - 因此只有一半时间 - 单个核心将运行8个步骤。)

多核CPU通常(在细节上是魔鬼)被认为是单个芯片上的多个CPU:每个核心,无论它位于何处,都可以同时执行程序。

例如,具有2个Intel i7-47xx(4核)处理器的系统具有8(2x4)个物理核心。 (使用Hyper-threading,有16个虚拟核心。)