计算机网络(6) ——同步IO/异步IO专题


文章目录

  • 理解性记忆
  • 计算机网络(6) ——同步IO/异步IO专题
    • 1.同步IO
    • 2.异步IO

理解性记忆

计算机网络(6) ——同步IO/异步IO专题

1.同步IO

在一个线程中,一旦遇到IO操作,如读写文件、发送网络数据等,就需要等待IO操作完成,完成后才能继续进行下一步操作。
这种情况称为同步IO。

那么问题来了。
如果只有这一个线程,且它正在IO阻塞中ing,那么其他位置的代码就无法执行了。

所以我们首先的解决方案就是:引入多线程!让其他的线程去执行别处的代码。
但是如果线程创建的太多,单核CPU下切换频繁的话,会导致代码真正运行的时间变少,性能下降。

于是,异步IO出现了!

2.异步IO

先说一下同步非阻塞与异步非阻塞的微妙区别。
同步非阻塞每隔一段时间就会检查IO是否返回/就绪,就绪则去执行它,否则去干别的工作。
异步非阻塞:IO返回/就绪后会发出指令,cpu只需要等待指令即可(不用反复轮询查看,期间可以做别的工作),获得指令信号后再去处理就行。
#######################################
1 老张把水壶放到火上,立等水开。(同步阻塞)
2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)
3 老张把响水壶放到火上,立等水开。(异步阻塞) (水开之后,能大声发出嘀~~~~的噪音。),这样没有意义
4 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)
(异步一般配合非阻塞用 “嗯嗯对对~”)

异步IO,IO结束后会发出指令,在发出指令前,CPU可以执行别的工作,期间不用反复轮询查看,等收到IO指令后再来处理即可。

计算机网络(6) ——同步IO/异步IO专题相关推荐

  1. 阻塞IO, 非阻塞IO, 同步IO,异步IO

    阻塞IO, 非阻塞IO, 同步IO,异步IO 介绍 先说明几个概念 用户空间与内核空间 为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操心系统将虚拟空间(内存)划分为两部分,一部分 ...

  2. 五种网络IO模型:阻塞式IO 非阻塞式IO IO复用(IO multiplexing) 信号驱动式IO 异步IO

    文章目录 五种网络IO模型 举例说明 阻塞式I/O模型 非阻塞式I/O I/O多路复用 信号驱动式I/O 异步I/O 比较结果 总结 同步 异步 阻塞 非阻塞 阻塞/非阻塞: 同步/异步: 举例子:小 ...

  3. python gevent模块 下载_Python协程阻塞IO非阻塞IO同步IO异步IO

    Python-协程-阻塞IO-非阻塞IO-同步IO-异步IO 一.协程 协程又称为微线程 CPU 是无法识别协程的,只能识别是线程,协程是由开发人员自己控制的.协程可以在单线程下实现并发的效果(实际计 ...

  4. IO复用\阻塞IO\非阻塞IO\同步IO\异步IO

    本文是对<UNIX网络编程卷1>第6章的总结. 一.            什么是IO复用? 它是内核提供的一种同时监控多个文件描述符状态改变的一种能力:例如当进程需要操作多个IO相关描述 ...

  5. Linux--同步IO/异步IO区别

    基本IO模型▼ 同步必须等待或者主动的去询问IO是否完成,完成后才能继续执行其他操作: 异步不需要等待结果就可以执行其他操作,比如常见的中断: 同步-阻塞 IO模型▼ 用户进程在发起一个IO操作以后, ...

  6. 【计算机网络】同步和异步

    在计算机网络中,"同步"的意思很广泛,没有统一的定义. 例如,协议的三个要素之一就是"同步".在网络通信编程的"同步",则主要指函数调用者需 ...

  7. Python之IO模式 阻塞式io 非阻塞io 多路复用io 异步io 信号驱动io

    参考:https://www.cnblogs.com/alex3714/articles/5248247.html 提高:http://www.cnblogs.com/alex3714/article ...

  8. python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)...

    python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程并行与并发同步与异步阻塞与非阻塞CPU密集型与IO密集型 线程与进程 进程 前言 ...

  9. 同步IO、异步IO、阻塞IO、非阻塞IO、复用IO

    参考:同步IO 异步IO 作者:今天天气眞好 发布时间: 2021-04-19 09:42:29 网址:https://blog.csdn.net/qq_51118175/article/detail ...

最新文章

  1. SunPower光伏组件出货量提高
  2. 遗传算法 简单函数优化
  3. WPF实例秀——不用属性也Binding
  4. excel公式:定位单元格
  5. 《Man Vs wild》 Notes-法国阿尔卑斯山
  6. java代码,继承。。。主要是传值,赋值。
  7. 前端必备,Adobe Premiere Pro 常用快捷键
  8. 【渝粤题库】广东开放大学 数据库技术安全 形成性考核
  9. Flutter 实现微信摇一摇的功能 Flutter 加速度感应
  10. Android系统(245)---SystemServer进程的创建流程
  11. java mysql 输入数据库_如何用JAVA录入数据到SQL数据库
  12. 注册cn域名应该注意些什么
  13. [JavaScript]20个优秀的Javascript导航技术
  14. 1周前,一个对外挂一无所知的人,在的成长过程(经典推荐)
  15. 单片机c语言程序包txt,单片机C语言应用100例(第3版)(含光盘1张) pdf epub mobi txt 下载...
  16. 如何将heic格式转化jpg?
  17. 10 个错过即损失的智能合约开发者工具
  18. SageMath cputime()
  19. (短除法)求两个给定正整数的最大公约数和最小公倍数。
  20. 冬令营二月七日工作日志

热门文章

  1. 华硕rog枪神6plus 怎么样
  2. org.apache.ibatis.type.TypeException: Could not set parameters for mapping报错
  3. WARNING:Could not increase the asynch I/O limit to 64 for SQL direct I/O. It is set to 0
  4. php图片背景平铺,css如何设置背景图片的平铺方式?css设置背景图片平铺的方法(图文详解)...
  5. JAVA中double转int类型按四舍五入取整(实用)
  6. TensorFlow-gpu2.0.0 + Anaconda + Win10(MX250)安装教程
  7. android download学习记录
  8. STM32CubeIDE:ST7789驱动TFTLCD显示(STM32F103C8T6)
  9. C语言bool类型变量命名,bool类型怎么用(c语言bool类型 怎么用)
  10. GitLab 14 登录