计算机网络(6) ——同步IO/异步IO专题
计算机网络(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专题相关推荐
- 阻塞IO, 非阻塞IO, 同步IO,异步IO
阻塞IO, 非阻塞IO, 同步IO,异步IO 介绍 先说明几个概念 用户空间与内核空间 为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操心系统将虚拟空间(内存)划分为两部分,一部分 ...
- 五种网络IO模型:阻塞式IO 非阻塞式IO IO复用(IO multiplexing) 信号驱动式IO 异步IO
文章目录 五种网络IO模型 举例说明 阻塞式I/O模型 非阻塞式I/O I/O多路复用 信号驱动式I/O 异步I/O 比较结果 总结 同步 异步 阻塞 非阻塞 阻塞/非阻塞: 同步/异步: 举例子:小 ...
- python gevent模块 下载_Python协程阻塞IO非阻塞IO同步IO异步IO
Python-协程-阻塞IO-非阻塞IO-同步IO-异步IO 一.协程 协程又称为微线程 CPU 是无法识别协程的,只能识别是线程,协程是由开发人员自己控制的.协程可以在单线程下实现并发的效果(实际计 ...
- IO复用\阻塞IO\非阻塞IO\同步IO\异步IO
本文是对<UNIX网络编程卷1>第6章的总结. 一. 什么是IO复用? 它是内核提供的一种同时监控多个文件描述符状态改变的一种能力:例如当进程需要操作多个IO相关描述 ...
- Linux--同步IO/异步IO区别
基本IO模型▼ 同步必须等待或者主动的去询问IO是否完成,完成后才能继续执行其他操作: 异步不需要等待结果就可以执行其他操作,比如常见的中断: 同步-阻塞 IO模型▼ 用户进程在发起一个IO操作以后, ...
- 【计算机网络】同步和异步
在计算机网络中,"同步"的意思很广泛,没有统一的定义. 例如,协议的三个要素之一就是"同步".在网络通信编程的"同步",则主要指函数调用者需 ...
- Python之IO模式 阻塞式io 非阻塞io 多路复用io 异步io 信号驱动io
参考:https://www.cnblogs.com/alex3714/articles/5248247.html 提高:http://www.cnblogs.com/alex3714/article ...
- python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)...
python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程并行与并发同步与异步阻塞与非阻塞CPU密集型与IO密集型 线程与进程 进程 前言 ...
- 同步IO、异步IO、阻塞IO、非阻塞IO、复用IO
参考:同步IO 异步IO 作者:今天天气眞好 发布时间: 2021-04-19 09:42:29 网址:https://blog.csdn.net/qq_51118175/article/detail ...
最新文章
- SunPower光伏组件出货量提高
- 遗传算法 简单函数优化
- WPF实例秀——不用属性也Binding
- excel公式:定位单元格
- 《Man Vs wild》 Notes-法国阿尔卑斯山
- java代码,继承。。。主要是传值,赋值。
- 前端必备,Adobe Premiere Pro 常用快捷键
- 【渝粤题库】广东开放大学 数据库技术安全 形成性考核
- Flutter 实现微信摇一摇的功能 Flutter 加速度感应
- Android系统(245)---SystemServer进程的创建流程
- java mysql 输入数据库_如何用JAVA录入数据到SQL数据库
- 注册cn域名应该注意些什么
- [JavaScript]20个优秀的Javascript导航技术
- 1周前,一个对外挂一无所知的人,在的成长过程(经典推荐)
- 单片机c语言程序包txt,单片机C语言应用100例(第3版)(含光盘1张) pdf epub mobi txt 下载...
- 如何将heic格式转化jpg?
- 10 个错过即损失的智能合约开发者工具
- SageMath cputime()
- (短除法)求两个给定正整数的最大公约数和最小公倍数。
- 冬令营二月七日工作日志
热门文章
- 华硕rog枪神6plus 怎么样
- org.apache.ibatis.type.TypeException: Could not set parameters for mapping报错
- WARNING:Could not increase the asynch I/O limit to 64 for SQL direct I/O. It is set to 0
- php图片背景平铺,css如何设置背景图片的平铺方式?css设置背景图片平铺的方法(图文详解)...
- JAVA中double转int类型按四舍五入取整(实用)
- TensorFlow-gpu2.0.0 + Anaconda + Win10(MX250)安装教程
- android download学习记录
- STM32CubeIDE:ST7789驱动TFTLCD显示(STM32F103C8T6)
- C语言bool类型变量命名,bool类型怎么用(c语言bool类型 怎么用)
- GitLab 14 登录