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

select,epoll的比较

时间:2014-10-19 14:20:41      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:sp   数据   bs   size   程序   用户   函数   ca   nbsp   

机制:

select:只支持水平触发(数据不处理完无限通知)

epoll:支持水平触发和边缘触发(仅通知一次)

 

单进程监控FD个数

select: 由FD_SETSIZE设置,默认值是2048。在大量连接的情况下明显不足。

epoll: 和内存有关,1G内存10W个,一般都够用。

 

内核监控事件的策略

select: 顺序遍历监控句柄数组,在监控大量连接句柄且数据通信非活跃状态下效率低下。

epoll: 活跃的句柄通过callback函数进行事件自主通知,资源消耗过小;

 

程序中获取事件句柄的方式

select: 返回整个监控句柄数组,只能顺序遍历查找里面有事件触发的句柄

epoll: 返回的数组就是所有已经触发事件的句柄。

 

数据传递

select: 内核态和用户态之间的数据传递需要进行copy

epoll: mmap映射数据空间,免去copy操作

 

select,epoll的比较

标签:sp   数据   bs   size   程序   用户   函数   ca   nbsp   

原文地址:http://www.cnblogs.com/hdflzh/p/4034848.html

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