select/poll模式下,如果线程被唤醒通知有某个文件是就绪状态,此时线程需要重新遍历所有的文件去看到底是谁就绪了
Selector注册了100个客户端,其中只有一个客户端有网络事件,这个时候Selector必须重新遍历一遍100个客户端,收集出来一个客户端的网络事件交给你的线程来进行处理,性能有问题
epoll不一样,如果有某个文件有就绪状态,直接回调epoll回调函数,把就绪的文件放入epoll的一个数据结果中,然后epoll直接就知道哪些文件是就绪的,不需要有一个重新遍历的过程,所以效率更高