以下为个人理解(有点片面,但适合初学者,或后期思考),读者不理解或者我误导了,请直接评论,当天回复

场景:厕所排队

一个厕所并且只有一个坑位,有十几个人排队,你排在第二的位置,你一离开,就得重新排队!

建议了解了io多路复用模型再来看

1.你需要一直盯着厕所门,查看里面的人是否搞定出来了.(BIO)

你自己在这期间不能离开干其他事.比如不能在座位上打代码

(这里极为容易混淆同步与阻塞关系)

自己反复查看->同步

坑位一直被占用的状态,需要等待坑位被"释放"->阻塞

同步阻塞

大白话:自己去查看是否有空位(同步),厕所不能够为我提供坑位,等待有人出来(阻塞)

2.你还是需要一直盯着厕所门,查看里面的人是否搞定出来了.(没人用这个)

但是你找了一个同事帮你看着位置,厕所里的人搞定了,同事会过来通知你.(不是IO多路复用)

你可以在这期间能离开去干其他事.比如可以继续呆在座位上打代码

(这里极为容易混淆异步与非阻塞关系)

自己不用反复查看,其他人通知你->异步

坑位一直被占用的状态,需要等待坑位被"释放"->阻塞

异步阻塞

大白话:同事替我去查看是否有空位,有了就告诉我(异步),厕所还是不能够为我提供坑位,等待有人出来(阻塞)

3.你还是需要一直盯着厕所门,查看里面的人是否搞定出来了.(NIO)

但是现在情况变了,厕所坑位变成了N个,不需要排队了,每个人直接去上就行.即不需要知道厕所里面的人是否搞定了

自己需要反复查看->同步

有坑位未占用,不要要等待坑位被"释放"->非阻塞

同步非阻塞

大白话:还是需要自己去查看是否有空位(同步),直接发现厕所有空坑位直接去上(非阻塞)

4.你还是需要一直盯着厕所门,查看里面的人是否搞定出来了.(AIO)

但是你找了一个同事帮你看着位置,厕所里的人搞定了,同事会过来通知你.

但是现在情况变了,厕所坑位变成了N个,不需要排队了,每个人直接去上就行.即不需要知道厕所里面的人是否搞定了

自己不用反复查看,其他人通知你->异步

有坑位未占用,不要要等待坑位被"释放"->非阻塞

异步非阻塞

大白话:同事替我去查看是否有空位,有了就告诉我(异步),直接发现厕所有空坑位直接去上(非阻塞)

如果还不明白:

可以想一下自己上厕所,同事帮你看着坑位.

1.通讯方式:

同步:必须自己确认执行完了没有.

异步:不需要自己确认执行完了没有,有人会通知你.

2.等待状态:

阻塞:等待前一个程序执行完毕,才能继续执行.

非阻塞:不需要等待前一个程序执行完毕,才能继续执行.

同步和异步的概念描述的是用户线程与内核的交互方式:同步是指用户线程发起IO请求后需要等待或者轮询内核IO操作完成后才能继续执行;而异步是指用户线程发起IO请求后仍继续执行,当内核IO操作完成后会通知用户线程,或者调用用户线程注册的回调函数。

阻塞和非阻塞的概念描述的是用户线程调用内核IO操作的方式:阻塞是指IO操作需要彻底完成后才返回到用户空间;而非阻塞是指IO操作被调用后立即返回给用户一个状态值,无需等到IO操作彻底完成。如果需要获取状态则需要轮询获取(io多路复用结局了轮询获取的弊端)

同步异步阻塞非阻塞详解相关推荐

  1. Python|线程和进程|阻塞|非阻塞|同步|异步|生成器和协程|资源竞争|进程间通信|aiohttp库|daemon属性值详解|语言基础50课:学习(11)

    文章目录 系列目录 原项目地址 第34课:Python中的并发编程-1 线程和进程 多线程编程 使用 Thread 类创建线程对象 继承 Thread 类自定义线程 使用线程池 守护线程 资源竞争 G ...

  2. NIO详解(二): BIO 浅谈 同步 异步与阻塞 非阻塞

    在我们了解Java NIO/BIO的网络通信之前,我们先了解一下常用的阻塞/非阻塞模型以及同步/异步的概念 一.阻塞和非阻塞 从简单的开始,我们以经典的读取文件的模型举例.(对操作系统而言,所有的输入 ...

  3. python进阶04IO的同步异步,阻塞非阻塞

    原创博客地址:python进阶04IO的同步异步,阻塞非阻塞 同步和异步 同步和异步关注的是消息通信机制. 所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回.但是一旦调用返回,就得到 ...

  4. 搭稳Netty开发的地基,用漫画帮你分清同步异步阻塞非阻塞

    Netty Netty是一款非常优秀的网络编程框架,是对NIO的二次封装,本文将重点剖析Netty客户端的启动流程,深入底层了解如何使用NIO编程客户端. Linux网络编程5种IO模型 根据UNIX ...

  5. C++ 同步/异步与阻塞/非阻塞的区别

    C++之 -------何为同步,异步何解,阻塞了呢?非阻塞呢? 走访各种大小论坛, 纠集纵多风云看法, 贴于此处表我观点, 界内人士若点迷津, 小弟定会铭记终生, 愿高手们不吝赐教, 长江后浪带着前 ...

  6. 异步通知是什么意思_一次相亲经历,我彻底搞懂了阻塞非阻塞、同步异步

    看到标题,可能你会想,相亲跟阻塞/非阻塞,同步/异步有啥关系,这个逗b不知道在想什么东西.不要急,且听我慢慢道来 年纪大了,一回家七大姑八大姨就各种催婚,都说要给我介绍女朋友.这不,刚刚门口,我的大姨 ...

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

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

  8. 迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)...

    常规的误区 假设有一个展示用户详情的需求,分两步,先调用一个HTTP接口拿到详情数据,然后使用适合的视图展示详情数据. 如果网速很慢,代码发起一个HTTP请求后,就卡住不动了,直到十几秒后才拿到HTT ...

  9. 同步 异步 阻塞 非阻塞概念区分

    老张爱喝茶,废话不说,煮开水. 提前剧透一下:同步和非同步主要用来形容被调用线程,阻塞非阻塞用来形容主线程的. 出场人物:老张(主线程),水壶(被调用线程)两把(普通水壶,简称水壶:会响的水壶,简称响 ...

最新文章

  1. linux环境下监控日志的变化命令 tail -f
  2. [转]jquery的一个模板引擎-zt
  3. arduino pmw 串口 字符串_ESP32 Arduino开发:串口(Serial port)
  4. ip_forward
  5. 【完美解决方案】module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘
  6. SAP License:外购和自产货物视同销售业务理解
  7. Java多线程之可见性之volatile
  8. 【编辑器】VSCode+PHPstudy环境配置,PHP简易开发环境搭建
  9. 047——VUE中css过渡动作实例
  10. 2021软考网络工程师2004-2020年真题含答案解析(最新)
  11. 三星s8 android版本,三星S8+官方国行版安卓9完整固件系统升级包:CHC-G9550ZCU3DSF2...
  12. 《Photoshop Lightroom4 经典教程》目录—导读
  13. Android Studio中竟然还能加入一个程序员鼓励师
  14. javacv截取视频截图-1.5.7版本精简包
  15. 使用crash工具分析高通ramdump
  16. c语言读取文件属性,Java File类(文件操作类)详解
  17. 网吧上网小心绝地求生账号被盗
  18. python 悬浮窗_python浮窗
  19. mysql查询周数_MySQL如何获取一个指定日期所对应本年度的周数(WEEK函数)呢?
  20. 数据库学习7 — 嵌套查询

热门文章

  1. 关系型数据库设计范式及原则
  2. bug的生命周期都有那些阶段
  3. Python绘制气泡图示例
  4. HikariPool配置详解
  5. C语言 | 二维数组作为函数参数
  6. linux中的setenv函数用法
  7. 对于各项生命周期的理解
  8. idea注释模版配置(吐血推荐!!!)
  9. 10.DirectionalLight(方向光)—— 模拟远处类似太阳的光源
  10. 【大数据处理技术】实验12