我觉得epoll和select最大的区别
最近在用epoll,网速资料很多,大家都说epoll和select的区别比较大,而且select要不停遍历所有的fd,效率要低,而且fd有限制。
但是我认为二者最大的区别在于
先看代码
while (1)
{
nfds = epoll_wait(epfd, events, 20, 50000);
cout << nfds <<endl;
if(nfds == -1)
{
perror("epoll_wait");
continue;
}
for(int i =0; i<nfds; i++)
{
if(events[i].events & EPOLLIN)
{
recv_data(events[i].data.fd);
}
}
}
epoll_wait返回nfds,是有事件的events的个数,在我的应用场景中一般都是0,难道在接下来的for循环中,由于nfds=1 而每次都只看events[0]事件吗,如果假设有20个事件,难道每次只看第一个吗。
所以events数组一直时动态变化的,发生事件的fd排在前面几个,而在select中,fd时固定的,所以需要它去遍历
因此我认为这才是二者最大的区别。
我觉得epoll和select最大的区别的更多相关文章
- 【转载】epoll与select/poll的区别总结
因为这道题目经常被问到.干脆总结一下,免得遗漏了. 参考文章:http://www.cnblogs.com/qiaoconglovelife/p/5735936.html 1 本质上都是同步I/O 三 ...
- Epoll,Poll,Select模型比较
http://blog.csdn.net/liangyuannao/article/details/7776057 先说Select: 1.Socket数量限制:该模式可操作的Socket数由FD_S ...
- epoll和select区别
先说下本文框架,先是问题引出,然后概括两个机制的区别和联系,最后介绍每个接口的用法 一.问题引出 联系区别 问题的引出,当需要读两个以上的I/O的时候,如果使用阻塞式的I/O,那么可能长时间的阻塞在一 ...
- python下的select模块使用 以及epoll与select、poll的区别
python下的select模块使用 以及epoll与select.poll的区别 先说epoll与select.poll的区别(总结) 整理http://www.zhihu.com/question ...
- 操作系统复习——如何查看一个进程的详细信息,如何追踪一个进程的执行过程 ,如何在 Linux 系统下查看 CPU、内存、磁盘、IO、网卡情况?epoll和select区别?
1. 如何查看一个进程的详细信息,如何追踪一个进程的执行过程 通过pstree命令(根据pid)进行查询进程内部当前运行了多少线程:# pstree -p 19135(进程号) 使用top命令查看(可 ...
- epoll poll select区别
函数依赖 ( Functional Dependency,FD) select:http://www.cnblogs.com/Anker/archive/2013/08/14/3258674.html ...
- Nginx之epoll和select poll
epoll和 select poll 都是做I/O多路复用的. 区别在于: epoll较灵活,如果有一百万个链接状态同时保持,但是在某个时刻,只有几百个链接是活跃的.epoll的处理是通过epoll_ ...
- 知识联结梳理 : I/O多路复用、EPOLL(SELECT/POLL)、NIO、Event-driven、Reactor模式
为了形成一个完整清晰的认识,将概念和关系梳理出来,把坑填平. I/O多路复用 I/O多路复用主要解决传统I/O单线程阻塞的问题.它通过单线程管理多个FD,当监听的FD有状态变化的时候的,调用回调函数, ...
- 使用epoll实现聊天室功能,同时比较epoll和select的异同
1.首先介绍一下select和epoll的异同,如下(摘抄自https://www.cnblogs.com/Anker/p/3265058.html) select的几大缺点: (1)每次调用sele ...
随机推荐
- Hadoop日志分析工具——White Elephant
White Elephant 是一个Hadoop日志收集器和展示器,它提供了用户角度的Hadoop集群可视化.White Elephant 是全球最大的职业社交网站Linkedin开发的一套分析Had ...
- javascript 鼠标方式去显示
document.write("<style type='text/css'>"); document.write(".yyfloat_p{width:209 ...
- matlab 等值线函数 contour
matlab 等值线函数 contour contour是等高线绘制函数我并没怎么用过这个函数,只是参照help将上面的英文翻译一下,如果有错误,请大家提出来.contour(Z)根据矩阵Z画出等高线 ...
- js匹配浏览器类型,收藏下
<script type="text/javascript">/** 智能机浏览器版本信息:**/ varbrowser={ versions:function ...
- 【好文收藏】javascript中event对象详解
event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromEleme ...
- Error -27780: Connection reset by peer: socket write error
Problem Description: Error: "-27780: read to host failed: [10054] Connection reset by peer" ...
- CMM已经落伍了,敏捷才是王道
首先强调一下,敏捷和有没有文档一点关系都没有.我只是对于CMM的那些文档感觉有些浪费. 看看那些文档,看看那些流程.想想那些伟大的软件作品,哪个是用CMM开发出来的? 作为测试工程师,程序员的你在CM ...
- C++ 的一个问题的理解(私有变量成员)
class CExample { public: CExample(){pBuffer=NULL; nSize=;} ~CExample(){delete pBuffer;} CExample(con ...
- B树、Trie树详解
查找(二) 散列表 散列表是普通数组概念的推广.由于对普通数组可以直接寻址,使得能在O(1)时间内访问数组中的任意位置.在散列表中,不是直接把关键字作为数组的下标,而是根据关键字计算出相应的下标. 使 ...
- stos
add <?php /* 添加脚本 参数:u=用户名 v=城市名 为用户添加城市标签 */ header("Content-Type:text/html; charset=utf-8& ...