C++ - 网络编程模型 - Linux EPOLL - - ITeye技术网站

C++ - 网络编程模型 - Linux EPOLL - - ITeye技术网站

 

1.简介

   Linux I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。Linux 2.6内核中有提高网络I/O性能的新方法,即epoll 。 epoll是什么?按照man手册的说法是为处理大批量句柄而作了改进的poll。要使用epoll只需要以下的三个系统函数调用:  epoll_create(2),epoll_ctl(2),epoll_wait(2)。


2.select模型的缺陷

   (1) 在Linux内核中,select所用到的FD_SET是有限的

   内核中有个参数__FD_SETSIZE定义了每个FD_SET的句柄个数:#define __FD_SETSIZE 1024。也就是说,如果想要同时检测1025个句柄的可读状态是不可能用select实现的;或者同时检测1025个句柄的可写状态也是不可能的。

   (2) 内核中实现select是使用轮询方法

   每次检测都会遍历所有FD_SET中的句柄,显然select函数的执行时间与FD_SET中句柄的个数有一个比例关系,即select要检测的句柄数越多就会越费时

你可能感兴趣的:(linux)