我一直在阅读并行编程和并发编程,还有两件事我还没有找到答案,而且仍然很困惑。
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,这怎么会更快呢?这两种执行方法都需要8次总计算,这意味着总时间是相同的。
发布于 2014-06-02 06:48:14
在一个双核(多核) CPU (或两个一个核心CPU)上,每个线程可以在一个单独的核心上运行。假设两个线程之间不需要同步,它们都可以同时运行(即,每个核心以相同的频率运行4个步骤-因此一半时间-单个核心运行8个步骤)。
一个多核CPU通常可以被认为是一个芯片上的多个CPU:每个独立于其所在位置的核心都可以同时执行一个程序。
例如,一个具有2×Intel i7-47xx (4核)处理器的系统具有8 (2x4)物理核。(使用超线程化,有16个虚拟核。)
https://stackoverflow.com/questions/23988376
复制相似问题