poll与select

来源:互联网 发布:网络武侠小说 编辑:程序博客网 时间:2024/06/06 15:57
poll与select 完成一样的 工作, 但poll 系统调用优于select。


1, poll 无需使用者计算最大的 文件描述符值加一和传递该参数。
2, poll在处理较大值的文件描述符时更具效率。select监视值为900的
文件描述符-----内核需要检查每个集合中的每个比特位,直到第900个。


3, select的文件描述符是静态大小的,所以要做出权衡: 如果集合很小,限制了
select可以监视的文件描述符的最大值,如果集合很大,效率不高。


poll则可以创建合适大小的数组,只需监视一项或仅仅传递一个结构体。


4, 使用select, 文件描述符集合在返回时重新创建,这样之后的每个调用都必须重新初始化它们。
poll 系统调用分离了输入 (events字段) 和 输出 (revents字段),数组无需改变即可重用。


5, select的 timeout参数在返回时是 未定义的,可移植的代码 需要重新初始化它,
然而pselect 没有这个问题。


select 优点:select可 移植性更好,某些unix不支持poll
select 提供更好的 超时方案,poll理论提供 纳秒级精度,但然并卵。


比poll和 select更好的是epoll,linux特有的IO多路复用方案。


0 0
原创粉丝点击