IO模型-非阻塞IO模型
目录
一、概念
二、操作流程
三、使用场景
一、概念
NIO(非阻塞IO模型)NIO即Non-Blocking IO,是非阻塞IO模型。概念限定范围:通过系统api获取数据。
也就是说调用系统api获取数据后,会立刻返回结果,程序不会阻塞等待数据。 根据返回的结果判断是否继续重复调用系统api获取数据。
二、操作流程
该模式下应用进程会以较高频率调用系统api进行数据获取,也就是说进程与内核会出现较多交互(进程用户态与内核态相互切换),直到获取到数据为止。
要注意的是,当内核数据准备好后,数据是需要由内核空间复制到用户的存储空间,这个复制数据的过程是阻塞的(也就是说,当数据特别大时,这个复制也会比较长时间,进程在这段时间内是不能立刻返回,需要等数据复制完成了返回结果)。
三、使用场景
一般将socket设置为NONBLOCK,然后启多个线程,每个线程轮询检测不同的socket,来达到处理多个socket的效果。一般socket比较少时,通过多线程也是不错的选择。
IO模型-非阻塞IO模型相关推荐
- 阻塞io阻塞io_Redis:RESP协议,阻塞IO 与非阻塞IO,Redis的线程模型
1.Redis 阻塞IO 与非阻塞IO Java在JDK1.4 中引入了NIO ,但是也有很多人在使用阻塞IO,这两种IO有什么区别? 在阻塞模式下,如果你从数据流读取不到指定大小的数据量,IO就会阻 ...
- 【多线程】0.理解一下5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO
5种IO模型.阻塞IO和非阻塞IO.同步IO和异步IO 看了一些文章,发现有很多不同的理解,可能是因为大家入切的角度.环境不一样.所以,我们先说明基本的IO操作及环境. 本文是在<UNIX网络编 ...
- Linux网络编程 | IO模型 :阻塞IO、非阻塞IO、信号驱动IO、异步IO、多路复用IO
目录 IO模型 阻塞与非阻塞 同步与异步 阻塞IO 非阻塞IO 信号驱动IO 多路复用IO 异步IO IO模型 根据各自的特性不同,IO模型被分为阻塞IO.非阻塞IO.信号驱动IO.异步IO.多路复用 ...
- 5种网络IO模型:阻塞IO、非阻塞IO、异步IO、多路复用IO、信号驱动IO
目录 前言 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO(Asynchronous I/O) 模型间的区别 ...
- IO模型 :阻塞IO、非阻塞IO、信号驱动IO、异步IO、多路复用IO
文章目录 IO模型 阻塞IO 非阻塞IO 信号驱动IO 多路复用IO 异步IO IO模型 根据各自的特性不同,IO模型被分为阻塞IO.非阻塞IO.信号驱动IO.异步IO.多路复用IO五类. 最主要的两 ...
- 5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO
5种IO模型.阻塞IO和非阻塞IO.同步IO和异步IO 看了一些文章,发现有很多不同的理解,可能是因为大家入切的角度.环境不一样.所以,我们先说明基本的IO操作及环境.本文是在<UNIX网络编程 ...
- 网络传输中的两个阶段、阻塞IO、非阻塞IO和多路复用
今天学习了网络传输中的两个阶段.阻塞IO.非阻塞IO和多路复用 一.网络传输中的两个阶段 分别是 waitdata 和 copydata send就是copydata recv是waitdata和co ...
- 同步IO、异步IO、阻塞IO、非阻塞IO、复用IO
参考:同步IO 异步IO 作者:今天天气眞好 发布时间: 2021-04-19 09:42:29 网址:https://blog.csdn.net/qq_51118175/article/detail ...
- 计算机网络——阻塞IO、非阻塞IO、IO多路复用
1 简介 网络IO模型有5种:阻塞IO.非阻塞IO.IO多路复用.信号驱动IO.异步IO 本文仅对阻塞IO.非阻塞IO.IO多路复用进行讲解 在网络通信中,对数据进行收发在发送端和接收端的 ...
- 阻塞IO、非阻塞IO、以及多路复用原理
阻塞IO.非阻塞IO.以及多路复用原理 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 阻塞IO.非阻塞IO.以及多路复用原理 什么是I/O 一.BIO(阻塞IO) 二.N ...
最新文章
- 如何理解 Web API
- iOS应用数据持久化(一)
- wordpress 模板中的链接_WordPress 官方AMP插件已更新至2.0版
- easyExcel 读取日期为数字的解决方案
- 解决无法删除表,提示被外键约束引用
- linux脚本计时,Linux用脚本实现“时分秒“倒计时功能
- HTML一个form表单中有两个(多个)submit,后台如何区分(纯HTML实现,无需javascript)
- 《Python Cookbook 3rd》笔记(3.8):分数运算
- 十六进制取反_技 术 | 你不知道的Java——04.十六进制
- 影响搜索引擎收录网站内容的四大原因分析
- CSS3属性选择器(CSS3)
- ANT的安装/配置笔记
- ES6学习:Map结构的目的和基本用法
- 扫雷算法实现(简易版,只能在CMD指令中玩)
- php中的m方法的区别吗,php中的M方法
- 安卓直播间websocket协议破解还原
- Git自学之路(二)- Git初始配置和基本使用
- C语言随机比大小循环,C语言基础知识之(三):循环、随机数
- C++ 实现tring字符串trim函数和split函数
- Tomcat7源码解析
热门文章
- Docker镜像推送阿里云和私有库
- 为什么用Python开发桌面应用程序
- Android build.gradle配置文件
- 【人体姿态追踪】Pose Flow: Efficient Online Pose Tracking 【解读】
- Android IT新闻阅读器与手机二维码
- mysql 连表查询_mysql数据库之联表查询
- MyBatis Plus 联表查询
- gearman mysql_gearman、gearman-mysql-udf安装
- linux 脚本 ll命令,linux中ll命令的详细解释
- 数据分析一、 pandas库基础知识