并发与并行的区别
1、意思不同
1、并发:并发是指两个或多个事件在同一时间间隔发生,把任务在不同的时间点交给处理器进行处理。在同一时间点,任务并不会同时运行。
2、并行:并行是指两个或者多个事件在同一时刻发生,把每一个任务分配给每一个处理器独立完成。在同一时间点,任务一定是同时运行。
2、侧重不同
1、并发:并发侧重于在同一实体上。(如单核CPU/单线程)
- 核心思想:让同一个处理器通过快速切换(时间片轮转),假装自己能同时处理多个任务。
- 比喻:
- 像 一个厨师同时照看三口锅(炒菜、煮汤、煎蛋),但同一时刻只能翻炒其中一口锅,其他锅在等待。
- 虽然看起来“同时进行”,实际是轮流操作。
2、并行:并行侧重于在不同实体上。(如多核CPU/多线程)
- 核心思想:让多个处理器 真正同时执行任务,每个处理器独立工作。
- 比喻:
- 三个厨师 分别负责炒菜、煮汤、煎蛋,三人同时动手,互不干扰。
3、为什么“侧重实体”是关键?
- 并发的瓶颈在于 任务切换成本(如保存/恢复上下文),适合I/O密集型任务(如Web服务器)。
- 并行的瓶颈在于 资源协调成本(如数据分片/同步),适合CPU密集型任务(如视频渲染)。
4、用Nginx举例
- 并发:单个Nginx worker用 一个线程 处理1000个连接(通过epoll快速切换)。
- 并行:4个Nginx worker跑在 4核CPU 上,同时处理4个请求(物理并行)。
3、处理不同
1、并发:并发在一个处理器上“同时”处理多个任务。
2、并行:并行在多个处理器上同时处理多个任务。