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