并发和并行的简单区分
· 阅读需 3 分钟
刚开始学并发和并行时总是整得有点懵,现在终于下手来好好梳理着两者的关系了。
首先并发的单词是 Concurrency,词根 con - 的意思是“一起”,而 current - 词根的意思是“当前”,所以总的意思就是“一起发生的事情”
并行的单词是 Parallelism,词根 parallel - 是平行、并列的意思,所以总的意思就是“平行发生的事情”,也可以说“同时发生的事情”
举一个知乎答主提到的一个形象的例子:
你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持 并发。
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。
并发的关键是你有处理多个任务的能力,不一定要同时。并行的关键是你有同时处理多个任务的能力。所以我认为它们最关键的点就是:是否是『** 同时 **』。
从这位知乎答主的我们其实就能够知道:并行是并发的一种特殊情况。 并发只要求有处理多个任务的能力,而并行要求有 ** 同时 ** 处理多个任务的能力
借此,我们来梳理一下多核 CPU 和单核 CPU 的并发、并行性
首先是针对单核 CPU,单核 CPU 很明确,一个时刻只能做一件事情,所以它不可能具备并行性,但它可能具备并发性(如果这台 CPU 支持处理多个任务的能力的话)
其次是多核 CPU,多核 CPU 就是多个单核 CPU 组成的,那么同一时刻处理多个任务就是一件轻而易举的事情了,也就是具有了并行性(有并行性就一定有并发性,前面我们已经说了并行性是并发性的一种特殊情况)