使用poll与epoll的区别主要在于: poll可以每次重新装填fd数组,但是epoll的fd是一开始就加入了,不可能每次都重新加入 于是采用这种策略: epoll除了listenfd一开始就监听read事件,其他的客户fd加入epoll时,监听的事件都为空。 然后在每次epoll_wait之前,...
分类:
系统相关 时间:
2014-10-27 21:09:42
阅读次数:
197
一、select
使用的集合的方式,最多只能监听1024个文件描述符,内部使用位操作,将相应的位置为1或者置为0,需要将可读、可写、异常的三类事件分开来用,内部使用轮询的方法,每次返回都需要将所有的套接字从内核到用户空间之间进行拷贝。
二、poll
比select稍微好一点,也是在指定时间内轮询一定数量的文件描述符,以测试其中是否有就绪。
三、epoll_wai...
分类:
其他好文 时间:
2014-10-26 23:03:38
阅读次数:
353
事件驱动这个名词出现的越来越频繁了,听起来非常高大上,今天本人把Redis内部的驱动模型研究了一番,感觉收获颇丰啊。一个ae.c主程序,加上4个事件类型的文件,让你彻底弄清楚,Redis是如何处理这些事件的。在Redis的事件处理中,用到了epoll,select,kqueue和evport,evport可能大家会陌生许多。前面3个都是非常常见的事件,在libevent的事件网络库中也都有出现。作...
分类:
其他好文 时间:
2014-10-26 11:51:15
阅读次数:
268
机制:select:只支持水平触发(数据不处理完无限通知)epoll:支持水平触发和边缘触发(仅通知一次)单进程监控FD个数select: 由FD_SETSIZE设置,默认值是2048。在大量连接的情况下明显不足。epoll: 和内存有关,1G内存10W个,一般都够用。内核监控事件的策略select...
分类:
其他好文 时间:
2014-10-19 14:20:41
阅读次数:
167
后台开发,网络交互是必须的,而epoll基本绝大多数网络框架的必备武器,本文对epoll进行详细的介绍,包括epoll的作用,优点,接口,实现原理等。一.epoll是什么epoll是一种IO多路转接技术,在LINUX网络编程中,经常用来做事件触发,即当有特定事件到来时,能够检测到,而不必阻..
分类:
其他好文 时间:
2014-10-17 05:55:34
阅读次数:
227
网上看了很多事件库的解读,自己也研究了好几遍,还是记录下来,虽然水平有限,但是进步总会是有的
网络事件库wu...
分类:
其他好文 时间:
2014-10-16 23:07:43
阅读次数:
295
??1 epollepoll是Linux下多路复用IO接口select/poll的增强版本号,它能显著提高程序在大量并、发连接中仅仅有少量活跃的情况下的系统CPU利用率,由于它会复用文件描写叙述符集合来传递结果而不用迫使开发人员每次等待事件之前都必须又一次准备要被侦听的文件描写叙述符集合,还有一点原...
分类:
其他好文 时间:
2014-10-16 19:15:43
阅读次数:
178
epoll - I/O event notification facility在linux的网络编程中,非常长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的优点在于它不会随着监听fd数目的增长而减少效率。由于...
分类:
其他好文 时间:
2014-10-16 17:48:22
阅读次数:
260
因为协程的好处,所以协程库现在有好多libtask,boost::coroutine,libco......
libtask很不错,以后或许会用。
boost我个人基本很少用。
腾讯的libco自己用汇编实现了swapcontext函数,不明觉厉(libtask也有ASM)。而且把epoll整合在了里面。
微信后台就用到了它.在chinaunix.net上的一个帖子中就说到了这个。...
分类:
其他好文 时间:
2014-10-13 18:19:57
阅读次数:
213
Apache Spark的高性能一定程度上取决于它采用的异步并发模型(这里指server/driver端采用的模型),这与Hadoop 2.0(包括YARN和MapReduce)是一致的。Hadoop 2.0自己实现了类似Actor的异步并发模型,实现方式是epoll+状态机,而Apache Spa...
分类:
编程语言 时间:
2014-10-13 14:23:49
阅读次数:
258