epoll 实际上是 poll 的一种改进,它可以处理大批量的句柄。而 poll 又是 select 的一种改进。在 select 中对所打开的文件描述符个数有一定的限制,该限制由 FD_SETSIZE 设置(一般为 1024 或 2048), 而且内核中的 select 的实现是采用轮询来处理描文件描述符集,因此效率低。当文件描述符集中的某个描述符处于可读、可写或异常状态时,select 采用内存拷贝方法通知用户空间。因此, 在 select 模型中文件描述符个数受限且效率低的问题就很明显。为了解决 se...
分类:
其他好文 时间:
2015-01-15 22:01:57
阅读次数:
239
epoll函数epoll函数的使用与select、poll上有很大的差异.epoll使用一组函数来完成任务,而不是单个函数.epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中,从而无需每次都要重复传入文件描述符集或者事件集.epoll需要一个额外的文件描述符,来唯一标示内核中的这个事件...
分类:
其他好文 时间:
2014-09-17 20:21:42
阅读次数:
188
Linux 2.4版本的内核之前,Nginx的事件驱动方式是使用的poll、select函数。进程需要等待连接上有事件发生(收到数据)时,需要把所有连接都告诉内核,由内核找出哪些连接上有事件发生。由于需要把大量连接从用户空间拷贝到内核空间,所以开销巨大,因此,使用poll、select事件驱动方式,最大并发数量只能达到几千。Linux 2.6版本之后添加了epoll函数接口,使得最大并发数量可以达...
分类:
其他好文 时间:
2014-07-13 17:27:34
阅读次数:
311
epoll函数#include int epoll_create(int size)int
epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)int epoll_wait(int
epfd,struct epoll_event...
分类:
其他好文 时间:
2014-05-06 00:21:30
阅读次数:
519