其参数是输入输出型参数,每次调用都重新将添加关心的描述符集。
监视文件描述符有上限,默认只有1024。
每次调用都会在用户空间和内核空间之间拷贝 fd 集。
每次调用内核和开发者都要变量所有fd,复杂度 O(N),当数量很多时,开销比较大。
性能高于多线程或多进程版本。
上限和 poll 一样,不再受限于文件描述符的限制。
不必在内核和用户空间多次拷贝fd 集合,只需要在使用前添加到集合即可,在不关心时删除即可。
内核操作描述符从线性的 O(N)提高到 O(log2n),效率更高。
阻塞等待时,内核只需要检测就绪队列是否有事件就绪,当返回时候,如果有事件就绪,则用户可以根据返回值知道就绪事件的范围,不需像 另外两者,会变量所有描述符。
epoll 可以说是poll 的加强版,其缺陷是目前不支持跨平台只在 Linux支持,且当有大量活跃的描述符时效率不及另外两者。
因篇幅问题不能全部显示,请点此查看更多更全内容