-
概述
- 区别概念: 并发 与 并行
-
背景
-
看书又碰到了这个概念
- 模模糊糊想起, 之前区别过的东西, 结果愣是记不起来了...
- 记不住就把他写下来吧
-
这俩出现的频率, 其实不低
- 但好像不同地方看到的人, 会对同一个概念有不同的解释
- 这才是 最让人迷惑 的地方
- 但好像不同地方看到的人, 会对同一个概念有不同的解释
-
1. 并行
-
概述
- 真正的 多任务处理
-
名字
- parallel
- 平行的
- 并行
- parallel
-
大概意思
- 机制
- 同时处理多个任务
- 并且这些任务互相不干扰
- 视角
- 宏观
- 多个任务被同时处理
- 微观
- 同一个时间点, 多个任务在被同时处理
- 宏观
- 机制
-
场景
-
进地铁
- 有多个闸机
- 每个闸机对应一队乘客
- 假设乘客完全遵守秩序, 只走自己这边
-
描述
- 多个闸机处理多条 队列
- 每个闸机之间的进度完全不相关
- 同一时间, 有多位乘客通过闸机
-
2. 并发
-
概述
- 虚假的 多任务处理
-
名字
- concurrency
- 就是并发
- 熟悉 Java 的朋友, 是不是很眼熟...
- 就是并发
- concurrency
-
大概意思
-
机制
- 同时处理多个任务
- 但本质上是多个任务交互执行
- 之所以感觉像是同时执行多个任务, 是因为 任务切换太快, 给人造成错觉
-
视角
- 宏观
- 多个任务呗同时处理
- 微观
- 同一个时间点, 只能处理一个任务
- 但是可以快速地切换, 快到让你感觉不出来
- 宏观
-
-
场景
-
还是进地铁
- 这次只有一个闸机
- 乘客们也都不排队了
- 这里假设, 还是有多个队列
- 但是闸机具体先处理哪个, 就各凭本事了
-
描述
- 单个闸机, 多条队列
- 闸机不停在各个队列之间来回切换
- 看着在处理多条队列, 实际上同时只能处理一个
-
3. 再回过头来, 看看经常出现的 高并发
-
某种程度上, 它是对的
- 一个服务器
- 无数个连接
- 每个连接无数个请求
- 如果服务器是个单线程的进程
- 那确实就是高并发
-
但如果服务器能同时处理多条 连接, 或者 多个请求
- 那这个说法, 或许该叫 高并行 了
-
爱怎么叫, 怎么叫吧
- 你心里有数就行
ps
-
ref
- 并发和并行的区别
- 讲得还听清楚
- 本来记得有本书上讲过, 但是找不到书了
- 这个讲得和书上很像, 就把他记下来
- 并发和并行的区别
-
记得区分之前的概念
- 阻塞/非阻塞 & 同步/异步