码迷,mamicode.com
首页 > 其他好文 > 详细

I/o多路复用之poll

时间:2016-06-18 01:38:07      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:linux poll

一、poll

    不同与select使用三个位图来表示三个fdset的方式,poll使用一个 pollfd的结构体指针实现。

 函数原型如下:

技术分享

其中nfds表示结构体数组中关心的文件描述符的个数,当加入新的文件描述符的时候需更新nfds的值。

其中pollfd结构体如下:

技术分享

pollfd结构包含了要监视的event和发生的event,不再使用select“参数-值”传递的方式。同时,

pollfd并没有最大数量限制(但是数量过多后性能也是会下降)。 和select函数一样,poll返

回后,需要轮询pollfd来获取就绪的描述符。

返回值:和select函数一样

技术分享


和select函数一样,poll返回后,需要轮询pollfd来获取就绪的描述符。

二、实现上和select很相似

如下:

sever.c

技术分享

技术分享

技术分享

技术分享

技术分享

clinet.c

技术分享

技术分享

技术分享

运行结果如下:

技术分享

分析:

select和poll都需要在返回后,通过遍历文件描述符来获取已经就绪的socket。事实上,同时连接的大量客户端在一时刻可能只有很少的处于就绪状态,因此随着监视的描述符数量的增长,其效率也会线性下降。


本文出自 “流苏” 博客,请务必保留此出处http://ab6107.blog.51cto.com/10538332/1790434

I/o多路复用之poll

标签:linux poll

原文地址:http://ab6107.blog.51cto.com/10538332/1790434

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!