作家
登录

高性能IO模型浅析

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

;

}

即竽暌姑户须要赓续地调用read,测验测验攫取socket中的数据,直到攫取成功后,才持续处理接收的数据。全部IO请求的过程中,固然用户线程每次提议IO请求后可以急速返回,然则为了比及数据,仍须要赓续地轮询、反复请求,消费了大年夜量的CPU的资本。一般很少直接应用这种模型,而是在其他IO模型中应用非浊宣IO这一特点。

process(buffer);

三、IO多路复竽暌姑

IO多路复竽暌姑模型是建立在内核供给的多路分别函数select基本之上的,应用select函数可以避免同步非浊宣IO模型中轮询等待的问题。

图3 多路分别函数select

如图3所示,用户起首将须要进行IO操作的socket添加到select中,然后壅塞等待select体系调用返回。当数据达到时,socket被激活,select函数返回。用户线程正式提议read请求,攫取数据并持续履行。

大年夜流程上来看,应用select函数进行IO要乞降同步壅塞模型没有太大年夜的差别,甚至还多了添加监督socket,以及调用select函数的额外操作,效力更差。然则,应用select今后最大年夜的优势是用户可以在一个线程内同时处理多个socket的IO请求。用户可以注册多个socket,然后赓续地调用select攫取被激活的socket,即可达到在同一个线程内同时处理多个IO请求的目标。而在同步壅塞模型中,必须经由过程多线程的方法才能达到这个目标。

void UserEventHandler::handle_event() {

用户线程应用select函数的伪代码描述为:

{

select(socket);

while(1) {

sockets = select();

for(socket in sockets) {

if(can_read(socket)) {

read(socket, buffer);

}


  推荐阅读

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

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


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

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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