AIO,BIO,NIO区别

news/2024/7/9 16:56:22 标签: epoll, 网络

AIO,BIO,NIO都进程进行IO的三种不同方式。

对于网络模型,这三种方式具体表现如下:

BIO:最常见的阻塞同步IO,是指客户端请求时,服务端会起一个线程,或者是在线程池调一个线程去处理读写,并维护连接。如果此时是长连接的话,这种方式无法达到较高并发量,因为线程本身不能起太多。

试想如下场景:做一个聊天服务器,你要对每个用户维护一个长连接。如果你用户量很高,有10w个同时在线,那你要起10w个线程,显然不实际。而且这10w个用户可能只有一部分在发送信息,那一定有很多线程是在阻塞态的,能不能让一个线程去阻塞呢?

NIO:非阻塞同步IO,linux下的select,poll,epoll可以视为NIO的实现。非阻塞是指服务端不会等待IO事件,而是把等待交给内核或者一个专门的线程去做,利用异步回调的方式,将IO前的等待和执行IO的时间分离。

继续上面的场景:如果这时候10w个用户在线,如果把等待都交给一个线程或者内核去做,像select,poll都是采用轮询的方式,即——我不知道谁要发生IO事件,那一个个问一下好了。如果用户数量少也没关系,但是用户数量到10w以上级别的话,你轮询一次也要10w次,十分浪费资源。epoll利用信号机制,当可读或者可写时,内核会发信号提醒,然后用户态调用回调函数执行对应事件。

AIO:非阻塞异步IO,aio其实和epoll原理很像,但是epoll是信号提醒之后还要自己进行IO操作,而aio是先给内核制定对应内存,让内核有空就去读写,然后读写完发送信号告诉进程,由进程处理。其实从网络编程来说,我觉得aio和epoll差别不算太大,因为像TCP和UDP,内核都有维护一块缓存暂时存放数据,epoll也只是将数据从内核读出来而已。

转载于:https://www.cnblogs.com/scaugsh/p/10293401.html


http://www.niftyadmin.cn/n/1187747.html

相关文章

html中设置文本坐标,如何在HTML中绝对定位文本基线

我对以下问题感到困惑.我希望(绝对)将某些HTML文本的基线定位在某个y坐标处,而文本应该从某个x坐标开始.下图清楚地说明了该问题.所以我基本上想要控制图中点(x,y)(以下称为“基点”)位于屏幕上的位置,相对于文档BODY的左上角或某些DIV.重要提示:我事先不知道文本的…

BZOJ1069 SCOI2007最大土地面积(凸包+旋转卡壳)

求出凸包&#xff0c;显然四个点在凸包上。考虑枚举某点&#xff0c;再移动另一点作为对角线&#xff0c;容易发现剩下两点的最优位置是单调的。过程类似旋转卡壳。 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include…

Notepad++使用VS深色主题

安装步骤&#xff1a; 1. 从VS2012/2013 Dark Theme for Notepad 下载VS2012-Dark.xml 2. 找到notepad的安装目录&#xff08;%PROGRAMFILES%\Notepad\&#xff09;&#xff0c; 看看目录下是否有 themes的文件夹&#xff0c; 如果不存在则新建 3. 将下载的VS2012-Dark.xml拷…

html给单选框赋值,layui radio性别单选框赋值方法

Html性别JSlayui.use(form, function () {var $ layui.jquery, form layui.form;$.ajax({type: "post",url: "/Shared/GetPiDate",data: {},async: true,dataType: "json",success: function (data) {$("input[namesex][value1]").a…

NLP度量指标BELU真的完美么?

摘要&#xff1a; NLP重要评价准则之一——BLEU&#xff0c;真的完美无缺么&#xff1f;    刚接触自然语言处理的朋友通常会问我&#xff1a;当系统的输出是文本&#xff0c;而非对输入文本进行某种分类&#xff0c;如何对该系统进行评估。当模型的输入是文本信息&#xf…

C++11 多线程中的call once

C11 多线程中的call once http://blog.csdn.net/cywosp/article/details/8968655

html 绘图标签视频播放,H5基础篇--HTML5 audio与video标签实现视频播放,音频播放...

随着互器打好基下是求的响的可域适的一的近重交的联网的飞速发展以及HTML5的应用&#xff0c;越来越多的项目中用到video&#xff0c;audio到二新&#xff0c;为都础过过发等宗和发制数事前理业待很理断到屏能击示和站公下图以使箭分以近一步调现了喜知进当常用标签。&lt一…

[精] C++11中once_flag,call_once实现分析

[精]C11中once_flag&#xff0c;call_once实现分析 http://www.tuicool.com/articles/QbmInyF 原文 http://blog.csdn.net/hengyunabc/article/details/33031465