同步异步阻塞非阻塞详解
以下为个人理解(有点片面,但适合初学者,或后期思考),读者不理解或者我误导了,请直接评论,当天回复
场景:厕所排队
一个厕所并且只有一个坑位,有十几个人排队,你排在第二的位置,你一离开,就得重新排队!
建议了解了io多路复用模型再来看
1.你需要一直盯着厕所门,查看里面的人是否搞定出来了.(BIO)
你自己在这期间不能离开干其他事.比如不能在座位上打代码
(这里极为容易混淆同步与阻塞关系)
自己反复查看->同步
坑位一直被占用的状态,需要等待坑位被"释放"->阻塞
同步阻塞
大白话:自己去查看是否有空位(同步),厕所不能够为我提供坑位,等待有人出来(阻塞)
2.你还是需要一直盯着厕所门,查看里面的人是否搞定出来了.(没人用这个)
但是你找了一个同事帮你看着位置,厕所里的人搞定了,同事会过来通知你.(不是IO多路复用)
你可以在这期间能离开去干其他事.比如可以继续呆在座位上打代码
(这里极为容易混淆异步与非阻塞关系)
自己不用反复查看,其他人通知你->异步
坑位一直被占用的状态,需要等待坑位被"释放"->阻塞
异步阻塞
大白话:同事替我去查看是否有空位,有了就告诉我(异步),厕所还是不能够为我提供坑位,等待有人出来(阻塞)
3.你还是需要一直盯着厕所门,查看里面的人是否搞定出来了.(NIO)
但是现在情况变了,厕所坑位变成了N个,不需要排队了,每个人直接去上就行.即不需要知道厕所里面的人是否搞定了
自己需要反复查看->同步
有坑位未占用,不要要等待坑位被"释放"->非阻塞
同步非阻塞
大白话:还是需要自己去查看是否有空位(同步),直接发现厕所有空坑位直接去上(非阻塞)
4.你还是需要一直盯着厕所门,查看里面的人是否搞定出来了.(AIO)
但是你找了一个同事帮你看着位置,厕所里的人搞定了,同事会过来通知你.
但是现在情况变了,厕所坑位变成了N个,不需要排队了,每个人直接去上就行.即不需要知道厕所里面的人是否搞定了
自己不用反复查看,其他人通知你->异步
有坑位未占用,不要要等待坑位被"释放"->非阻塞
异步非阻塞
大白话:同事替我去查看是否有空位,有了就告诉我(异步),直接发现厕所有空坑位直接去上(非阻塞)
如果还不明白:
可以想一下自己上厕所,同事帮你看着坑位.
1.通讯方式:
同步:必须自己确认执行完了没有.
异步:不需要自己确认执行完了没有,有人会通知你.
2.等待状态:
阻塞:等待前一个程序执行完毕,才能继续执行.
非阻塞:不需要等待前一个程序执行完毕,才能继续执行.
同步和异步的概念描述的是用户线程与内核的交互方式:同步是指用户线程发起IO请求后需要等待或者轮询内核IO操作完成后才能继续执行;而异步是指用户线程发起IO请求后仍继续执行,当内核IO操作完成后会通知用户线程,或者调用用户线程注册的回调函数。
阻塞和非阻塞的概念描述的是用户线程调用内核IO操作的方式:阻塞是指IO操作需要彻底完成后才返回到用户空间;而非阻塞是指IO操作被调用后立即返回给用户一个状态值,无需等到IO操作彻底完成。如果需要获取状态则需要轮询获取(io多路复用结局了轮询获取的弊端)
同步异步阻塞非阻塞详解相关推荐
- Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)
文章目录 系列目录 原项目地址 第34课:Python中的并发编程-1 线程和进程 多线程编程 使用 Thread 类创建线程对象 继承 Thread 类自定义线程 使用线程池 守护线程 资源竞争 G ...
- NIO详解(二): BIO 浅谈 同步 异步与阻塞 非阻塞
在我们了解Java NIO/BIO的网络通信之前,我们先了解一下常用的阻塞/非阻塞模型以及同步/异步的概念 一.阻塞和非阻塞 从简单的开始,我们以经典的读取文件的模型举例.(对操作系统而言,所有的输入 ...
- python进阶04IO的同步异步,阻塞非阻塞
原创博客地址:python进阶04IO的同步异步,阻塞非阻塞 同步和异步 同步和异步关注的是消息通信机制. 所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回.但是一旦调用返回,就得到 ...
- 搭稳Netty开发的地基,用漫画帮你分清同步异步阻塞非阻塞
Netty Netty是一款非常优秀的网络编程框架,是对NIO的二次封装,本文将重点剖析Netty客户端的启动流程,深入底层了解如何使用NIO编程客户端. Linux网络编程5种IO模型 根据UNIX ...
- C++ 同步/异步与阻塞/非阻塞的区别
C++之 -------何为同步,异步何解,阻塞了呢?非阻塞呢? 走访各种大小论坛, 纠集纵多风云看法, 贴于此处表我观点, 界内人士若点迷津, 小弟定会铭记终生, 愿高手们不吝赐教, 长江后浪带着前 ...
- 异步通知是什么意思_一次相亲经历,我彻底搞懂了阻塞非阻塞、同步异步
看到标题,可能你会想,相亲跟阻塞/非阻塞,同步/异步有啥关系,这个逗b不知道在想什么东西.不要急,且听我慢慢道来 年纪大了,一回家七大姑八大姨就各种催婚,都说要给我介绍女朋友.这不,刚刚门口,我的大姨 ...
- 15分钟读懂进程线程、同步异步、阻塞非阻塞、并发并行,太实用了!
作者:Martin cnblogs.com/mhq-martin/p/9035640.html 基本概念 1 进程和线程 进程(Process): 是Windows系统中的一个基本概念,它包含着一个运 ...
- 迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)...
常规的误区 假设有一个展示用户详情的需求,分两步,先调用一个HTTP接口拿到详情数据,然后使用适合的视图展示详情数据. 如果网速很慢,代码发起一个HTTP请求后,就卡住不动了,直到十几秒后才拿到HTT ...
- 同步 异步 阻塞 非阻塞概念区分
老张爱喝茶,废话不说,煮开水. 提前剧透一下:同步和非同步主要用来形容被调用线程,阻塞非阻塞用来形容主线程的. 出场人物:老张(主线程),水壶(被调用线程)两把(普通水壶,简称水壶:会响的水壶,简称响 ...
最新文章
- linux环境下监控日志的变化命令 tail -f
- [转]jquery的一个模板引擎-zt
- arduino pmw 串口 字符串_ESP32 Arduino开发:串口(Serial port)
- ip_forward
- 【完美解决方案】module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘
- SAP License:外购和自产货物视同销售业务理解
- Java多线程之可见性之volatile
- 【编辑器】VSCode+PHPstudy环境配置,PHP简易开发环境搭建
- 047——VUE中css过渡动作实例
- 2021软考网络工程师2004-2020年真题含答案解析(最新)
- 三星s8 android版本,三星S8+官方国行版安卓9完整固件系统升级包:CHC-G9550ZCU3DSF2...
- 《Photoshop Lightroom4 经典教程》目录—导读
- Android Studio中竟然还能加入一个程序员鼓励师
- javacv截取视频截图-1.5.7版本精简包
- 使用crash工具分析高通ramdump
- c语言读取文件属性,Java File类(文件操作类)详解
- 网吧上网小心绝地求生账号被盗
- python 悬浮窗_python浮窗
- mysql查询周数_MySQL如何获取一个指定日期所对应本年度的周数(WEEK函数)呢?
- 数据库学习7 — 嵌套查询