最近在用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最大的区别的更多相关文章

  1. 【转载】epoll与select/poll的区别总结

    因为这道题目经常被问到.干脆总结一下,免得遗漏了. 参考文章:http://www.cnblogs.com/qiaoconglovelife/p/5735936.html 1 本质上都是同步I/O 三 ...

  2. Epoll,Poll,Select模型比较

    http://blog.csdn.net/liangyuannao/article/details/7776057 先说Select: 1.Socket数量限制:该模式可操作的Socket数由FD_S ...

  3. epoll和select区别

    先说下本文框架,先是问题引出,然后概括两个机制的区别和联系,最后介绍每个接口的用法 一.问题引出 联系区别 问题的引出,当需要读两个以上的I/O的时候,如果使用阻塞式的I/O,那么可能长时间的阻塞在一 ...

  4. python下的select模块使用 以及epoll与select、poll的区别

    python下的select模块使用 以及epoll与select.poll的区别 先说epoll与select.poll的区别(总结) 整理http://www.zhihu.com/question ...

  5. 操作系统复习——如何查看一个进程的详细信息,如何追踪一个进程的执行过程 ,如何在 Linux 系统下查看 CPU、内存、磁盘、IO、网卡情况?epoll和select区别?

    1. 如何查看一个进程的详细信息,如何追踪一个进程的执行过程 通过pstree命令(根据pid)进行查询进程内部当前运行了多少线程:# pstree -p 19135(进程号) 使用top命令查看(可 ...

  6. epoll poll select区别

    函数依赖 ( Functional Dependency,FD) select:http://www.cnblogs.com/Anker/archive/2013/08/14/3258674.html ...

  7. Nginx之epoll和select poll

    epoll和 select poll 都是做I/O多路复用的. 区别在于: epoll较灵活,如果有一百万个链接状态同时保持,但是在某个时刻,只有几百个链接是活跃的.epoll的处理是通过epoll_ ...

  8. 知识联结梳理 : I/O多路复用、EPOLL(SELECT/POLL)、NIO、Event-driven、Reactor模式

    为了形成一个完整清晰的认识,将概念和关系梳理出来,把坑填平. I/O多路复用 I/O多路复用主要解决传统I/O单线程阻塞的问题.它通过单线程管理多个FD,当监听的FD有状态变化的时候的,调用回调函数, ...

  9. 使用epoll实现聊天室功能,同时比较epoll和select的异同

    1.首先介绍一下select和epoll的异同,如下(摘抄自https://www.cnblogs.com/Anker/p/3265058.html) select的几大缺点: (1)每次调用sele ...

随机推荐

  1. 【SVN/Visual Studio】清除/更换AnkhSVN的用户登录信息

    问题: 在VS开发环境下,使用SVN做版本控制,用了TortoiseSVN和插件AnkhSVN.提交代码到SVN服务器时,发现用的是别人的SVN帐号,不是自己的号(比如该电脑之前是别人在使用).想要清 ...

  2. lua——string之string.gsub

    translated from the lua document string.gsub用法: 函数原型:string.gsub( s, pattern, rep1[, n] ) 函数功能:返回一个和 ...

  3. iOS开发小技巧--定义宏和pch文件的使用

    一.创建pch文件,默认跟项目同名 二.告诉系统,编译的时候要编译pch文件的步骤 三.把经常用到的宏  或者  分类 包含到这里

  4. Fork of LGPL version of JPedal

    https://github.com/on-site/JPedal —————————————————————————————————————————————————————————————————— ...

  5. Laravel Debugbar

    Installation Require this package with composer: composer require barryvdh/laravel-debugbar After up ...

  6. html中的label配合checkbox,redio用法

    <input id="a1" type="checkbox" name="a" value="33023" /&g ...

  7. 用CSS3实现文字描边效果【效果在这儿,创意在你!】

    CSS3作为新兴的前端技术可以实现很多复杂变化的效果,比如文字描边. 这里主要用到text-shadow属性,顾名思义就是为文字加上阴影效果.例: text-shadow:10px 5px 2px # ...

  8. Qt::WA_DeleteOnClose 造成的野指针问题

    今天遇到了一个由Qt::WA_DeleteOnClose造成的野指针问题,在网上搜到的一个求助贴如下(http://bbs.csdn.net/topics/380182058): 主窗口类QMainW ...

  9. C# 如何使用NPOI操作Excel以及读取合并单元格等

    C#操作Excel方法有很多,以前用的需要电脑安装office才能用,但因为版权问题公司不允许安装office.所以改用NPOI进行Excel操作,基本上一些简单的Excel操作都没有问题,读写合并单 ...

  10. Spring 依赖注入(DI)的注解

    Spring中想要使用注解进行依赖注入,需要进行如下配置: <beans xmlns="http://www.springframework.org/schema/beans" ...