通过IO模型带来的思考
IO模型
对于IO,我们经常可以听到诸如同步阻塞IO,同步非阻塞IO,异步IO等等,那么什么是异步/同步,什么是阻塞/非阻塞?首先一次IO在UNIX系统中分为两个步骤
1.发起IO请求:用户线程向操作系统内核发起IO请求
2.执行IO操作:当内核准备好数据可以提交给发起IO请求的线程
阻塞/非阻塞的区别:发起IO请求之后会一直等待直到获取数据则是阻塞,否则是非阻塞
同步/异步的区别:获取到的数据是自己主动拿到的则是同步,是被动拿到的则是异步
下面我用取快递这个例子来介绍一下UNIX的五种IO模型
众所周知吸管喝饮料分为两个步骤:1.打开快递柜(发起IO请求),2.取走快递(执行IO操作)
同步&阻塞IO
打开快递柜(发起IO请求),如果快递柜里没有东西(内核没有准备好数据),则一直等在快递柜旁等快递来(阻塞直到内核准备好数据),快递柜有了快

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
2018年,10个最好用的Python集成开发环境
这篇文章收集了一些对开发者非常有帮助的,最好的 10 款 Python IDE。 1. PyCharm PyCharm 是 JetBrains 开发的 Python IDE。PyCharm用于一般IDE具备的功能,比如, 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制……另外,PyCharm还提供了一些很好的功能用于Django开发,同时支持Google App Engine,更酷的是,PyCharm支持IronPython! 2. Vim 曾有人开玩笑说,如果生成一段随机字符串,有人回答给他一个Vim 编辑器就可以了。Vim 虽然使用门槛高,但是一旦你学会了,写代码的效率杠杠的,Vim 是高级文本编辑器,旨在提供实际的 Unix 编辑器’Vi’功能,支持更多更完善的特性集。Vim 不需要花费太多的学习时间,一旦你需要一个无缝的编程体验,那么就会把 Vim 集成到你的工作流中。这是黑客最喜欢的编辑器之一。 3. Eclipse with PyDev Eclipse 曾今是非常流行的 IDE,而且已经有了很久的历史。虽然现在慢慢地被 jetbrain...
- 下一篇
React与前端:React家族介绍
我曾在微博上说过“React就是哪吒”,那么一个前端框架和哪吒有什么关系呢?其实我觉得二者有某些相似的地方。 哪吒家室显赫,拥有的神器多到需要三头六臂才能拿得过来,后来经历磨难,脱胎换骨,能够独当多面。 React源自Facebook,集多项特色于一身——组件化、声明式、虚拟DOM、局部更新、状态机等,React 16引入的Fiber架构更可谓脱胎换骨,得Flux、Redux、immutable.js、React Router助阵,如虎添翼。 随着React Native的出世和React Canvas的诞生,更是让React如同有了三头六臂一般,将传统前端突破到安卓端、iOS端,大有一统全端的趋势。 目前三大框架Angular、React、Vue.js逐鹿中原,无论谁主沉浮,我都相信能“革了React命”的一定不是React的仿制品。 如果你对上面提到的这些名词不是特别了解,建议你阅读本文后续的内容,本文将介绍前端的历史和React相关知识。 1 前端简史 在没有Web时,信息的传递不太容易,得发明一种工具,让信息的创造者和阅读者都能看到一样的东西,于是Web诞生了。 1.1 Web...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS关闭SELinux安全模块
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7,CentOS8安装Elasticsearch6.8.6