select
使用数组存储事件,长度限制为1024,因为select采用位标记法去看那个fd活跃,具体是采用一个长度为32的int数组(32*32=1025,一个int是4个字节,一个字节是8位)整个数组需要在内核态与用户态之间拷贝,使用轮训的方法判断事件是否就绪
poll
poll与select的区别是poll使用list链表存储事件,也需要轮训遍历
epoll
epoll使用红黑树存储事件,一个事件加入红黑树时候会向内核注册一个回调函数,当事件就绪就将事件加入就绪队列,返回到用户空间的事件都是就绪的,不用轮询,降低时间复杂度