作家
登录

高性能IO模型浅析

作者: 来源: 2017-07-10 11:53:27 阅读 我要评论

高机能IO模型浅析

}

(1)同步壅塞IO(Blocking IO):即传统的IO模型。

(2)同步非浊宣IO(Non-blocking IO):默认创建的socket都是浊宣的,非浊宣IO请求socket被设置为NONBLOCK。留意这里所说的NIO并非Java的NIO(New IO)库。

(3)IO多路复竽暌姑(IO Multiplexing):即经典的Reactor设计模式,有时也称为异步壅塞IO,Java中的Selector和Linux中的epoll都是这种模型。

(4)异步IO(Asynchronous IO):即经典的Proactor设计模式,也称为异步非浊宣IO。

同步和异步的概念描述的是用户线程与内核的交互方法:同步是指用户线程提议IO请求后须要等待或者轮询内核IO操作完成后才能持续履行;而异步是指用户线程提议IO请求后仍持续履行,当内核IO操作完成后会通知用户线程,或者调用用户线程注册的回调函数。

壅塞和非浊宣的概念描述的是用户线程调用内核IO操作的方法:壅塞是指IO操作须要彻底完成后才返回到用户空间;而非浊宣是指IO操作被调用后急速返回给用户一个状况值,无需比及IO操作彻底完成。

别的,Richard Stevens 在《Unix 收集编程》卷1中提到的基于旌旗灯号驱动的IO(Signal Driven IO)模型,因为该模型并不常用,本文不作涉及。接下来,我们具体分析四种常见的IO模型的实现道理。为了便利描述,我们同一应用IO的读操作作为示例。

一、同步壅塞IO

同步壅塞IO模型是最简单的IO模型,用户线程在内核进行IO操作时被壅塞。

图1 同步壅塞IO

如图1所示,用户线程经由过程体系调用read提议IO读操作,由用户空间转到内核空间。内核比及数据包达到后,然后将接收的数据拷贝到用户空间,完成read操作。

用户线程应用同步壅塞IO模型的伪代码描述为:

{

read(socket, buffer);

}

二、同步非浊宣IO

同步非浊宣IO是在同步壅塞IO的基本上,将socket设置为NONBLOCK。如许做用户线程可以在提议IO请求后可以急速返回。

图2 同步非浊宣IO

如图2所示,因为socket长短浊宣的方法,是以用户线程提议IO请求时急速返回。但并未攫取到任何数据,用户线程须要赓续地提议IO请求,直到数据达到后,才真正攫取到数据,持续履行。

用户线程应用同步非浊宣IO模型的伪代码描述为:

{

while(read(socket, buffer) != SUCCESS)

;

process(buffer)

 1/5    1 2 3 4 5 下一页 尾页

  推荐阅读

  长文解密卷积神经网络体系结构

引言先坦白地说,有一段时光我无法真正懂得深度进修。我查看相干研究论文和文┞仿,感到深度进修异常复杂。我测验测验去懂得神经收集及其变体,但依然认为艰苦。接着有一天,我决定一步一>>>详细阅读


本文标题:高性能IO模型浅析

地址:http://www.17bianji.com/lsqh/36095.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)