select:poll:epoll:函数详解
!!! tip I/O复用基本概念
- I/O(多路)复用,采用单个进/线程就可以管理多个socket。
- I/O复用有三种方案:select,poll,epoll,各有优缺点,各有应用场景,必须全部掌握。
!!!
select
1 | // select函数详解 头文件::sys/select.h |
- select缺点
- select支持的文件描述符数量太小,默认是1024,虽然可以调整,但是,描述符数量越大,效率将更低,调整的意义不大。
- 每次调用select,都需要把fdset从用户态拷贝到内核。
- 同时在线的大量客户端有事件发生的可能很少,但还是需要遍历fdset,因此随着监视的描述符数量的增长,其效率也会线性下降。
poll
1 | // poll函数详解 头文件#include <poll.h> |
epoll
1 | // epoll函数详解 头文件 #include《sys/epoll.h》 |