并行和并发有以下几点区别:
-
并行(Parallelism):多个任务同一时间真实地在不同的处理器上执行。多个任务同时进行。
-
并发(Concurrency):多个任务 overlap(交叉)彼此的执行,但实际上它们并不是同一时间在真实的cpu上执行。
-
并行利用多核/多CPU,提高效率。并发利用单核/单CPU,在任务等待资源的时候不是空闲,而是执行其他任务。
-
并行需要多处理器/多核,真的同时执行。并发在单核cpu上使用时间片轮转,看起来同时执行。
-
并行的目的是利用多Processing power(处理能力)加速程序运行。 并发的目的是利用 idle time(空闲时间),提高资源利用率。
-
并发任务看上去像同时运行,但实际上是轮流运行。并行任务是真正同时运行。
-
并发更加简单,但效率较低。并行实现复杂,但效率更高。
所以,总的来说:
- 并行需要多核/多CPU实现,任务真正同时执行,效率高。
- 并发需要单核/单CPU实现,任务轮流执行,看起来同时执行,效率低于并行。
- 并发更加易实现,主要优化CPU利用率。并行更加复杂,主要改善运行时间。