标签: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
标签:linux poll
原文地址:http://ab6107.blog.51cto.com/10538332/1790434