并发与并行的区别


#乱炖


并发

concurrent / Concurrency

在一段时间内,多个任务都会被处理;但在某一时刻,只有一个任务在执行。

单核 CPU 可以做到并发。比如有两个进程A和B,运行A若干时间后,再运行B若干时间,再回来运行A。因为够快,所以用户体验感觉是同时执行的。

并行

parallel / Parallelism

在同一时刻,有多个任务在执行。

需要硬件上配置多核CPU/多处理器。

更形象的解释

知乎-并发与并行的区别?,给了一个类比:

你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。

还有一个回答引用了一幅图:



( 本文完 )