面试问题

33 阅读1分钟

并行和并发有以下几点区别:

  1. 并行(Parallelism):多个任务同一时间真实地在不同的处理器上执行。多个任务同时进行。

  2. 并发(Concurrency):多个任务 overlap(交叉)彼此的执行,但实际上它们并不是同一时间在真实的cpu上执行。

  3. 并行利用多核/多CPU,提高效率。并发利用单核/单CPU,在任务等待资源的时候不是空闲,而是执行其他任务。

  4. 并行需要多处理器/多核,真的同时执行。并发在单核cpu上使用时间片轮转,看起来同时执行。

  5. 并行的目的是利用多Processing power(处理能力)加速程序运行。 并发的目的是利用 idle time(空闲时间),提高资源利用率。

  6. 并发任务看上去像同时运行,但实际上是轮流运行。并行任务是真正同时运行。

  7. 并发更加简单,但效率较低。并行实现复杂,但效率更高。

所以,总的来说:

  • 并行需要多核/多CPU实现,任务真正同时执行,效率高。
  • 并发需要单核/单CPU实现,任务轮流执行,看起来同时执行,效率低于并行。
  • 并发更加易实现,主要优化CPU利用率。并行更加复杂,主要改善运行时间。