🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### poll ~~~ int poll(struct pollfd *fds, unsigned int nfds, int timeout); ~~~ poll 的功能与 select 类似,也是等待一组描述符中的一个成为就绪状态 ### 比较 #### 1.功能 select 和 poll 的功能基本相同,不过在一些实现细节上有所不同。 * select 会修改描述符,而 poll 不会; * select 的描述符类型使用数组实现,FD\_SETSIZE 大小默认为 1024,因此默认只能监听少于 1024 个描述符。如果要监听更多描述符的话,需要修改 FD\_SETSIZE 之后重新编译;而 poll 没有描述符数量的限制; * poll 提供了更多的事件类型,并且对描述符的重复利用上比 select 高。 * 如果一个线程对某个描述符调用了 select 或者 poll,另一个线程关闭了该描述符,会导致调用结果不确定。 #### 2. 速度 select 和 poll 速度都比较慢,每次调用都需要将全部描述符从应用进程缓冲区复制到内核缓冲区 #### 3. 可移植性 几乎所有的系统都支持 select,但是只有比较新的系统支持 poll