Skip to content

并行与并发的区别

一、核心定义

  • 并发(Concurrency):同一时间应对多件事情的能力。多个线程/任务轮流使用CPU时间片,宏观上同时运行,微观上仍是串行执行。
  • 并行(Parallelism):同一时间动手做多件事情的能力。多个线程/任务在不同CPU核心上同时执行,真正实现同时运行。

二、不同CPU环境下的表现

1. 单核CPU

  • 只能实现并发:操作系统通过时间片轮转调度,让多个线程轮流使用同一个CPU核心。由于切换速度极快,人类感知为“同时运行”,但微观上仍是串行执行。

2. 多核CPU

  • 可同时实现并发+并行
    • 并发:多个线程轮流使用不同核心的时间片
    • 并行:多个线程在不同核心上同时执行,互不干扰

三、通俗理解

  • 并发:一个人同时处理做饭、打扫卫生、喂奶,轮流交替做这些事,宏观上看起来在同时进行。
  • 并行:三个人分别负责做饭、打扫卫生、喂奶,同时开工,互不干扰,真正同时完成多件事。
  • 混合场景:两个人一起处理家务,既存在分工(并行),也存在对锅等资源的竞争(并发)。

四、面试高频问题解析

  1. 问:并发和并行的区别是什么?

    答: 并发指宏观上多个任务同时推进,微观上交替执行,依靠CPU时间片切换实现;并行指多个任务在多个CPU核心上同一时刻真正同时执行。单核CPU仅能实现并发,多核CPU才可支持并行。

  2. 问:单核CPU能实现并行吗?

    答: 单核CPU同一时刻只能运行一个线程,无法实现并行,只能通过时间片轮转的方式模拟并发执行。

  3. 问:并发和并行分别适合什么场景?

    答: 并发多用于IO密集型任务,利用线程切换填补IO等待空隙,提升整体吞吐量;并行多用于计算密集型任务,借助多核CPU同时运算,缩短整体执行耗时。

  4. 问:并发任务为何会给人同时运行的感觉?

    答: CPU线程切换的时间片间隔极短,切换速度远超人体感知,因此多个交替执行的任务,在宏观视角下看起来是同时运行的。

Powered by VitePress 1.6.4 | 持续更新中