那谁的技术博客

感兴趣领域:高性能服务器编程,存储,算法,Linux内核
随笔 - 210, 文章 - 0, 评论 - 1183, 引用 - 0
数据加载中……

epoll相关资料整理

学习epoll有一段时间了,最近终于有一个服务器采用了epoll模型,从中积累了一些epoll的资料.个人感觉目前可以找到的epoll相关的资料太少了,因为epoll仅被linux 2.6以上版本内核所支持,它的应用时间还比较短暂, 而一些讲解网络编程的相关权威书籍(如已逝的stevens的UNP)都没有讲解这个不能跨unix平台的专有技术,而epoll带来的巨大效率提高又使得这项技术很有吸引力, 于是我决定将个人遇到的epoll相关问题整理一下, 随着对epoll的理解深入, 这份资料将不断的完善下去.

需要说明的是, 这份教材不适合网络编程的初学者, 这里假设读者具备一定的网络编程基础, 使用过多路复用IO如select等.

1) 能不能给一个使用epoll相关API进行IO监控的示例?
在<<epoll学习笔记>>中有一个简单的示例说明epoll相关API的使用, 但是这个示例是非常简单的, 它仅仅关注于如何使用epoll相关函数上面, 如果要更好的使用epoll, 还需要自己动手以及阅读资料.

2) epoll和select都属于多路复用IO吗?与阻塞IO相比多路复用IO有什么优点?
在<<epoll为什么这么快>>, 重点是解释epoll对比select在效率上提高的原因, 但是同时也解释了多路复用IO的工作原理.

3) epoll的ET模式和LT模型有什么区别?
<<epll学习笔记>>通过一个实例说明了两者之间的差异, 但是我想, 如果结合着man文档(man epoll)来看效果会更好些.

4) 我的服务器是采用多进程模型的, 我的父进程首先创建了epoll所使用的fd, 然后再创建子进程, 为什么使用的时候没过多久epoll_wait函数就一直返回0, 这样IO事件就不会得到通知了?
太巧了, 笔者也遇到过类似的问题, 花了好几天的时间进行调试, 很幸运的是, 你不必像我这样耗费时间在这个问题上面了, 因为在<<多进程服务器中,epoll的创建应该在创建子进程之后>>中已经有了解答.

5)epoll的效率比起select来有很大的提高, 这里面有什么秘密吗?
其实原理很简单, 就是计算机世界中"空间换时间"思想的体现, 在<<epoll为什么这么快>>中有详细的解释.



posted on 2008-10-13 22:11 那谁 阅读(11103) 评论(4)  编辑 收藏 引用 所属分类: 网络编程服务器设计Linux/Unix

评论

# re: epoll相关资料整理  回复  更多评论   

记号 学习epoll时好好看看
2008-10-16 17:50 | 浪迹天涯

# re: epoll相关资料整理  回复  更多评论   



windows中的完成端口也不错。Boost中的ASIO库也不错,前段时间我就专门去看Boost的ASIO的文档了。推荐博主看一下。
2008-10-16 20:43 | 海边沫沫

# re: epoll相关资料整理[未登录]  回复  更多评论   

"而一些讲解网络编程的相关权威书籍(如已逝的stevens的UNP)都没有讲解这个不能跨unix平台的专有技术",epoll是模仿UNIX下的/dev/poll来移植到Linux实现的,epoll也是个模仿的,只不过在Linux下打败了/dev/epoll。
2010-01-23 08:48 | li

# re: epoll相关资料整理  回复  更多评论   

这几篇epoll的博客,如此糟糕,你还好意思提及stevens?
2012-08-12 18:07 | 显然是错的

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理