发博文
正文 字体大小:

epoll

(2006-11-06 12:59:44)
    这两天看了看epoll这东西,被吹的神乎的东西。我觉得并没有什么用途,并不能和Windows上的完成端口等同而论。本质上这东西和poll,select差不多的东西,都是在FDSET中有事件发生时返回,在返回的FDSET中指明可以无阻塞完成的事件,由应用程序进行相应的处理。属于同步IO的概念。
 
    唯一的好处是,epoll代替用户维护FDSET而已。提供了个维护FDSET的函数。也就算是在poll和select上的改进吧。
 
    epoll提供的边沿出发的机制,理论上可以提高服务期的性能。不过由此造成的代码设计复杂。
 
    至于绑定用户数据指针的方式,也很容易实现,Linux的FD基本是一个从零开始的int做个数组就轻易解决了。在一个主要维护TCP连接的服务器中也用途不大。如果还用到大量的其它FD还有些用途,节省点内存而已。
 
    对于完成端口对线程使用的优化这里根本就没有。而且在wait_epoll的线程中阻塞的话,必然影响其他用户。对于会阻塞的操作,还得使用另外的线程池,自己进行控制。我觉得没有完成端口对线程的处理好。
 
    完成端口使用的是异步方式,在操作完成的时候,数据已经复制到了用户提交的内存中了。可见epoll较之完成端口,至少要多一次系统调用。不过也有人说这是优点,功能单一,设计更为合理。
 
 
libevent - an event notification library<
 
 
Scalable Network Programming<http://bulk.fefe.de/scalable-networking.pdf>
 

阅读 评论 收藏 转载 打印举报
前一篇:上班 工作
后一篇:IT
  • 评论加载中,请稍候...

       

    验证码: 请点击后输入验证码 收听验证码

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    < 前一篇上班 工作
    后一篇 >IT
      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有