并发、并行、串行、同步、异步、阻塞、非阻塞

实际上同步与异步是针对应用程序与内核的交互而言的。

  • 同步过程中进程触发IO操作并等待(也就是我们说的阻塞)或者轮询的去查看IO操作(也就是我们说的非阻塞)是否完成。
  • 异步过程中进程触发IO操作以后,直接返回,做自己的事情,IO交给内核来处理,完成后内核通知进程IO完成。

同步和异步针对应用程序来说,关注的是程序中间的协作关系;阻塞与非阻塞更关注的是单个进程的执行状态。

同步有阻塞和非阻塞之分,异步没有,它一定是非阻塞的。

阻塞、非阻塞、多路IO复用,都是同步IO,异步必定是非阻塞的,所以不存在异步阻塞和异步非阻塞的说法。真正的异步IO需要CPU的深度参与。

换句话说,只有用户线程在操作IO的时候根本不去考虑IO的执行全部都交给CPU去完成,而自己只等待一个完成信号的时候,才是真正的异步IO。

所以,拉一个子线程去轮询、去死循环,或者使用select、poll、epool,都不是异步。

1.并发VS并行

CPU在一个时间点只能执行一个线程,并发是指在同一个处理器上通过时间片轮转的方式在多个线程之间频繁切换,造成在一个时间段内同时执行多个线程的假象。

线程有五种状态:新建-就绪-运行-阻塞-终止

单个处理器并发处理线程,当一个线程被运行时,其余的线程就被挂起,处于阻塞状态,执行完当前时间片内的线程,该线程处于阻塞状态,执行下一时间片要处理的任务。

程序的设计者可以为线程指定优先级,优先级高的会被处理器优先调度,或者CPU根据任务的类型决定处理顺序,一般来说,CPU会先去处理一些IO密集型的任务,

并行是指多个处理器在某一瞬间能够同时执行多个线程,是真正意义的同时执行。

在多处理器系统中,既有并发也有并行。

2.并行VS串行

串行通信与并行通信最开始指的是数据的传输方式,数据信号是以八位二进制(也有可能是其他,原理一致)的形式传输,可以是使用一条数据线,按位以固定的时间间隔传输二进制,叫作串行通信,也可以是八条数据线一次将八位二进制数全部传输过去,叫作并行通信。

3.同步VS异步

同步是指在当存在多个任务时,当前线程一次只执行一个任务,处理完一个再处理下一个,不会开启新的线程。

异步就是开启新的线程去处理任务。

4.阻塞VS非阻塞

阻塞:在调用系统函数时,由系统决定是否将当前线程挂起,挂起之后等待函数调用结果返回,然后进入就绪态的是阻塞。

非阻塞:不挂起线程,函数立即返回,线程去执行别的任务,非阻塞不定时询问CPU处理结果,函数返回之后继续执行。

参考:并发、并行、串行、同步、异步、阻塞、非阻塞

参考:开发要搞清楚什么是并发,并行,串行,同步,异步?

参考:多线程,串行,并发,并行,同步,异步概念总结

参考:IO复用,AIO,BIO,NIO,同步,异步,阻塞和非阻塞 区别(百度)

并发、并行、串行、同步、异步、阻塞、非阻塞相关推荐

  1. java并发 并行 串行

    并发: 并发是指允许多个任务互相干扰,在一个时间点上,只有一个任务在执行.交叉时间段只能选择一个任务来完成. 并行: 并行是在同一时刻互不干扰的进行任务.多个事件在同一时刻发生 串行: 串行在时间上不 ...

  2. 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行,太实用了!

    作者:Martin cnblogs.com/mhq-martin/p/9035640.html 基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运 ...

  3. 深入理解并发/并行,阻塞/非阻塞,同步/异步

    北京 | 深度学习与人工智能 12月23-24日 再设经典课程 重温深度学习阅读全文> 正文共3359个字,11张图,预计阅读时间:9分钟. 1.阻塞,非阻塞 首先,阻塞这个词来自操作系统的线程 ...

  4. cpu 被挂起和阻塞_同步异步阻塞非阻塞并发并行讲解

    通过一个很形象的例子来说明同步异步阻塞非阻塞. 场景: 小明使用 chrome 下载一个软件. 1. 同步阻塞 小明使用 没有提醒功能的chrome 下载一个软件.小明 一直坐在电脑面前什么事也不做, ...

  5. 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行

    基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程 ...

  6. 进程线程、同步异步、阻塞非阻塞、并发并行

    一.进程和线程 1️⃣[进程Process]是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程. 进程 ...

  7. 并发编程:并发和并行、多进程、同步异步,阻塞非阻塞、进程同步(进程锁)、线程、GIL全局解释器锁、锁-信号量-Event事件、协程

    文章目录 一. 操作系统的发展史 二. 进程基础 三. 并发和并行 四. 如何开启多进程 五. 进程调度算法(了解) 六. 同步异步,阻塞非阻塞(了解) 1. 状态介绍 2.同步和异步.阻塞和非阻塞 ...

  8. 进程线程、同步异步、阻塞非阻塞、并发并行、多线程

    一: 进程和线程 1: 进程(Process) 是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程.线 ...

  9. python 进程池阻塞和非阻塞_python 之 并发编程(进程池与线程池、同步异步阻塞非阻塞、线程queue)...

    9.11 进程池与线程池 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 池子内什么时候装进程:并发的任务属于计算密集型池子内什么时候装线程:并发的任务属于IO ...

  10. 同步异步 阻塞 非阻塞 异步调用 线程队列 协程

    阻塞 非阻塞 阻塞:程序遇到了IO操作 导致代码无法继续执行 交出了COU执行权 非阻塞:没有IO操作 或者即使遇到IO操作 也不阻塞代码执行 阻塞 就绪 运行指的是应用程序所处的状态写程序时 尽量减 ...

最新文章

  1. java反射的性能_java反射的性能问题
  2. 解决IE5、IE6、IE7与W3C标准的冲突(IE7.js IE8.js)
  3. (19)C++项目练习二----------【音乐播放器】
  4. seasar一般性配置
  5. hadoop学习——Hadoop核心组件
  6. SAP License:SAP的采购批准策略
  7. Altium AD20更改原理图栅格改为点栅格
  8. 多个物体轮廓c语言提取算法,C++ opencv-3.4.1 提取不规则物体的轮廓
  9. 扩展 delphi 泛型 以实现类似lambda功能 , C#中的any count first last 等扩展方法
  10. 计数器java代码_计数器的java代码
  11. 英国交通分析指南(Transport analysis guidance)解读及启示
  12. spring cloud bus
  13. 基于SSH 实验室设备管理系统详细功能
  14. 通过PS修出自然的大长腿
  15. 用python一键生成你的微信好友头像墙
  16. 匹配指定字符背后的所有内容(正则表达式)
  17. 第07篇 部署区块链浏览器(2)
  18. 如何使用VS+C#创建,优雅自动化的安装(不使用命令行),调试,更新Windows服务
  19. 我眼中的王石(转 目光呆滞的润土)
  20. C语言 数组元素的遍历

热门文章

  1. 红黑树 键值_查找(一)史上最简单清晰的红黑树讲解
  2. 3D IoU-Net:三维目标检测预测IoU
  3. 计算机视觉中的数据预处理与模型训练技巧总结
  4. 物体的三维识别与6D位姿估计:PPF系列论文介绍(三)
  5. CondLaneNet:基于条件卷积的自顶向下车道检测框架
  6. 视频|结构光编码与三维重建
  7. 收集了100+论文的最新综述来了!基于深度学习的图像深度重建
  8. OpenCV norm 计算范数(18)
  9. 使用canvas操作图像
  10. c#switch语句判断成绩_Go的条件判断语句