I/O多路服用技术通过把多个I/O的阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下可以同时处理多个用户请求。
一.与多线程/多进程相比优势:
1.系统开销小;
2.系统不需要额外的进程或线程;也不需要维护这些进程和线程的运行降低了系统维护工作量,节省系统资源。
二. I/O多路服用技术使用场景
1.服务器需要同时处理多个处于监听状态或多个连接状态的套接字
2.服务器需要同时处理多种网络协议的套接字。
三.支持I/O多路复用系统调用有select,pselect,poll,epoll,主流使用select,epoll。
1.select最大的缺陷是单个进程所打开的文件描述符是有一定限制的,FD_SETSIZE=1024;如果是大型上万TCP连接的场景显然不合适,然而,epoll并没有这个限制,它支持的文件描述符上限是操作系统的最大文件句柄数,最大文件句柄数由内存关系比较大,可通过cat /proc/sys/fs/file -max查看。
2.select是顺序扫描,每次扫描socket集合时间比较长,epoll则不是。