首页 技术 正文
技术 2022年11月14日
0 收藏 570 点赞 4,440 浏览 984 个字

本文详解同步、异步、阻塞、非阻塞,以及IO与这四者的关联,毕竟我当初刚认识这几个名词的时候也是一脸懵。

【面试】详解同步/异步/阻塞/非阻塞/IO含义与案例
【面试】详解同步/异步/阻塞/非阻塞/IO含义与案例
【面试】详解同步/异步/阻塞/非阻塞/IO含义与案例
【面试】详解同步/异步/阻塞/非阻塞/IO含义与案例


目录

1.同步阻塞、同步非阻塞、异步阻塞、异步非阻塞

1.同步
  • 同步就是多个事物不能同时工作,只能依次排队进行
2.异步
  • 多个事物可以同时工作,不用依次进行
3.阻塞
  • 线程需要停止等待
4.非阻塞
  • 线程可以运行工作
5.四者关联

同步/异步,关注的是能不能同时工作

阻塞/非阻塞,关注的是能不能动

  • 同步阻塞:不能同时工作,也不能动。比如只有一条小道,一次只能过一辆车,可悲的是都堵上了。
  • 同步非阻塞,不能同时开工,但可以动。比如只有一条小道,一次只能过一辆车,幸运的是可以正常通行。
  • 异步阻塞,可以同时开工,但不可以动。有多条路,每条路都可以跑车,可气的是全都堵上了。
  • 异步非阻塞,可以工时开工,也可以动。有多条路,每条路都可以跑车,很爽的是全都可以正常通行。

回到程序中对应线程就是

  • 同步阻塞,相当于一个线程在等待。
  • 同步非阻塞,相当于一个线程在正常运行。
  • 异步阻塞,相当于多个线程都在等待。
  • 异步非阻塞,相当于多个线程都在正常运行。

2.IO与上述四者的关联

1.IO、阻塞IO、非阻塞IO
  • IO: 指的就是读入/写出数据的过程,和等待读入/写出数据的过程。一旦拿到数据后就变成了数据操作了,就不是IO了

    • 阻塞IO:用户线程被阻塞在等待数据上或拷贝数据上
    • 非阻塞IO:用户线程没有因为IO的事情出现阻塞
2.同步IO、同步阻塞IO

在IO中,同步与非阻塞是互斥的,即不存在同步非阻塞IO,而同步非阻塞即存在的,但那不叫IO,叫操作数据

  • 同步IO:必须拿到IO的数据,才可以继续执行。对应代码中读取文件然后操作

  • 非阻塞IO:发起IO请求后,代码就可以往下执行。即一定不是同步。

所以,同步IO一定是阻塞IO,同步IO等于同步阻塞IO。且不存在同步非阻塞IO

3.异步IO、异步阻塞IO、异步非阻塞IO
  • 异步IO:异步IO是指发起IO请求后,不用拿到IO的数据就可以继续执行

    • 异步阻塞IO:发起IO请求后,在拷贝数据这个过程中,线程发生了阻塞。
    • 异步非阻塞IO:发起IO请求后,收到通知,数据处理好了,且这个过程没发生阻塞。
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,020
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,513
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,359
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,142
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,772
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,850