其他 - 概念区分 - 并发与并行

社会主义新天地 提交于 2019-12-05 14:32:56
  1. 概述
    1. 区别概念: 并发 与 并行
  2. 背景
    1. 看书又碰到了这个概念
      1. 模模糊糊想起, 之前区别过的东西, 结果愣是记不起来了...
      2. 记不住就把他写下来吧
    2. 这俩出现的频率, 其实不低
      1. 但好像不同地方看到的人, 会对同一个概念有不同的解释
        1. 这才是 最让人迷惑 的地方

1. 并行

  1. 概述
    1. 真正的 多任务处理
  2. 名字
    1. parallel
      1. 平行的
      2. 并行
  3. 大概意思
    1. 机制
      1. 同时处理多个任务
      2. 并且这些任务互相不干扰
    2. 视角
      1. 宏观
        1. 多个任务被同时处理
      2. 微观
        1. 同一个时间点, 多个任务在被同时处理
  4. 场景
    1. 进地铁
      1. 有多个闸机
      2. 每个闸机对应一队乘客
        1. 假设乘客完全遵守秩序, 只走自己这边
    2. 描述
      1. 多个闸机处理多条 队列
      2. 每个闸机之间的进度完全不相关
      3. 同一时间, 有多位乘客通过闸机

2. 并发

  1. 概述
    1. 虚假的 多任务处理
  2. 名字
    1. concurrency
      1. 就是并发
        1. 熟悉 Java 的朋友, 是不是很眼熟...
  3. 大概意思
    1. 机制
      1. 同时处理多个任务
      2. 但本质上是多个任务交互执行
      3. 之所以感觉像是同时执行多个任务, 是因为 任务切换太快, 给人造成错觉
    2. 视角
      1. 宏观
        1. 多个任务呗同时处理
      2. 微观
        1. 同一个时间点, 只能处理一个任务
        2. 但是可以快速地切换, 快到让你感觉不出来
  4. 场景
    1. 还是进地铁
      1. 这次只有一个闸机
      2. 乘客们也都不排队了
        1. 这里假设, 还是有多个队列
        2. 但是闸机具体先处理哪个, 就各凭本事了
    2. 描述
      1. 单个闸机, 多条队列
      2. 闸机不停在各个队列之间来回切换
      3. 看着在处理多条队列, 实际上同时只能处理一个

3. 再回过头来, 看看经常出现的 高并发

  1. 某种程度上, 它是对的
    1. 一个服务器
    2. 无数个连接
      1. 每个连接无数个请求
    3. 如果服务器是个单线程的进程
      1. 那确实就是高并发
  2. 但如果服务器能同时处理多条 连接, 或者 多个请求
    1. 那这个说法, 或许该叫 高并行 了
  3. 爱怎么叫, 怎么叫吧
    1. 你心里有数就行

ps

  1. ref
    1. 并发和并行的区别
      1. 讲得还听清楚
      2. 本来记得有本书上讲过, 但是找不到书了
        1. 这个讲得和书上很像, 就把他记下来
  2. 记得区分之前的概念
    1. 阻塞/非阻塞 & 同步/异步
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!