Linux 阻塞和非阻塞 IO简介_阻塞和非阻塞网络io应用场景_一只青木呀的博客-程序员秘密

技术标签: Linux  阻塞和非阻塞IO  

Linux 阻塞和非阻塞 IO简介

阻塞和非阻塞简介

这里的 IO 指的是 Input/Output,也就是输入/输出,是应用程序对驱动设备的输入/输出操作。当应用程序对设备驱动进行操作的时候,如果不能获取到设备资源,那么阻塞式 IO 就会将应用程序对应的线程挂起,直到设备资源可以获取为止。对于非阻塞 IO,应用程序对应的线程不会挂起,它要么一直轮询等待,直到设备资源可以使用,要么就直接放弃。

1、阻塞IO

在这里插入图片描述
图中应用程序调用 read 函数从设备中读取数据,当设备不可用或数据未准备好的时候就会进入到休眠态。等设备可用的时候就会从休眠态唤醒,然后从设备中读取数据返回给应用程序

2、非阻塞IO

在这里插入图片描述
应用程序使用非阻塞访问方式从设备读取数据,当设备不可用或数据未准备好的时候会立即向内核返回一个错误码,表示数据读取失败。应用程序会再次重新读取数据,这样一直往复循环,直到数据读取成功。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45309916/article/details/111937086

智能推荐

Java入门实例classpath及package详解(转帖)_sofful的博客-程序员秘密

    Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE

15个国内常用语料库_顺其自然~的博客-程序员秘密

http://www.aihanyu.org/cncorpus/index.aspx该语料库是由国家语言文字工作委员会主持,面向语言文字信息处理、语言文字规范和标准的制定、语言文字的学术研究、语文教育以及语言文字的社会应用,总体规模达1 亿字,语料时间跨度为1919-2002年,收录了人文与社会科学、自然科学及综合三个大类约40个小类的语料。其中标注语料库为国家语委现代汉语通用平衡语料库全库的子集,该子集是按照预先设计的选材原则进行平衡抽样,对语料进行分词和词类标注,并经过三次人工校对,最后得到约5000万

nyoj_40 公约数和公倍数_Jiaming_95的博客-程序员秘密

公约数和公倍数时间限制:1000 ms  |  内存限制:65535 KB难度:1描述小明被一个问题给难住了,现在需要你帮帮忙。问题是:给出两个正整数,求出它们的最大公约数和最小公倍数。输入第一行输入一个整数n(0随后的n行输入两个整数i,j(0输出输出每组测试数据的最大公约数和最小公倍数样例输入36 612 1133 22

Supervisor进程管家:安装、配置、实例和报错问题处理_supervisor curl停止程序_褪sεの记忆的博客-程序员秘密

Supervisor是一个进程管理工具用途就是有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断。当进程中断的时候我希望能自动重新启动它,此时,我就需要使用到了Supervisor1、安装与配置第一步:安装supervisor(前提要有python2)wget https://pypi.python.org/packages/source/s/supervisor...

QT实时数据演示_qt实时调取tp、tr、f1、map数据_Nehzil-kino的博客-程序员秘密

实时数据演示①设置功能customPlot->addGraph();// blue linecustomPlot->graph(0)->setPen(QPen(Qt::blue));customPlot->graph(0)->setName("曲线名称");customPlot->addGraph(); // red linecustomPlot->graph(1)->setPen(QPen(Qt::red));customPlot->gr

Markdown 中将无效超链接由链接形式转换为纯文本格式方法_markdown编辑器如何让链接以文档名称形式展示_yqyang1的博客-程序员秘密

例如 Markdown 中编辑为:显示为超链接形式若要将该链接显示为文本形式,在 Markdown 中做如下编辑:则可显示为:推荐一个Markdown线上编辑器:https://www.mdeditor.com/...

随便推点

在linux中 系统默认,Linux中的系统默认日志_吴威华的博客-程序员秘密

/var/log/cron记录了系统定时任务相关的日志/var/log/cups记录了打印信息的日志/var/log/dmesg记录了系统在开机时内核自检的信息,可以通过dmesg命令直接查看/var/log/btmp记录错误登录的日志,不能直接查看,是二进制文件,使用lastb命令查看/var/log/lastlog记录系统中所有用户最后一次登录时间,不能直接查看,是二进制文件,使用lastlo...

mobasterm登录时出现:access denied_mobaxtern access deny是被禁止登录了吗_chen_ziyang的博客-程序员秘密

https://blog.csdn.net/djshichaoren/article/details/81275141今天用MobaXterm连接阿里云服务器,总是显示Access Denied。一开始以为是22端口没打开,但是检查了安全组以后,发现22端口是默认打开的。使用了密钥发现还是不行。最后发现specify username是服务器的用户名,而不是自己随便命名的,我说咋进去以后只...

Maven之setting.xml配置文件详解_砍我一刀的博客-程序员秘密

setting.xml配置文件maven的配置文件settings.xml存在于两个地方:1.安装的地方:${M2_HOME}/conf/settings.xml2.用户的目录:${user.home}/.m2/settings.xml前者又被叫做全局配置,对操作系统的所有使用者生效;后者被称为用户配置,只对当前操作系统的使用者生效。如果两者都存在,它们的内容将被合

Node 文件上传,ZIP_aihong5702的博客-程序员秘密

上传文件:很多人会使用第三包进行文件的上传,例如formidable。我也研究过,可是与Express3.x框架一起使用时,发现上传的文件总是找不到。结果原因是下面这句导致:app.use(express.bodyParser({'uploadDir:xxx'}));Node端上传文件会将上传的文件临时保存到一个目录,然后再通过我们码的代码来移动文件到我们的指定...

Android VideoView 全屏_安卓videoview全屏_AmazingUU的博客-程序员秘密

使用VideoView播放视频时,总是不能进行全屏播放,即使是将VideoView的layout_width和layout_height设置为match_parent也不行,网上找了找问题的解决办法,发现是videoview源码里的onMeasure方法为了使视频保持原有的长宽比,将长和宽根据控件大小按比例缩放,这就导致有时候长度到达控件大小,而宽度没有或者宽度到达控件大小,而长度没有,会有一定的黑

高德地图JavaScript API开发研究_Claire_ljy的博客-程序员秘密

高德地图JavaScript API开发研究 原文:高德地图JavaScript API开发研究高德地图JavaScript API是一套用JavaScript 语言编写的应用程序接口,可以通过各种API接口向地图添加内容,创建功能丰富、交互性强的地图应用。高德地图JavaScript API 提供了大量的实用工具和富有特色的插件功能,并...

推荐文章

热门文章

相关标签