并发与并行

并发(concurrent):在某个时间段内有多个程序在执行

并行(parallel):在某个时间点有多个程序在执行

并发是伪并行,真正的并行需要多个核心。由于现代计算机的核心是有限的,但通常运行的进程远大于核心数,所以在计算机科学中,并发往往是探讨的重点。

以下引用自 Go 语言的创造者之一 Rob Pike 所做的演讲 并发不是并行(并发更好)

并发是指一次处理多件事。

并行是指一次做多件事。

二者不同,但是有联系。

一个关于结构,一个关于执行。

并发用于制定方案,用来解决可能(但未必)并行的问题。