linux poll和select的区别
时间: 2023-10-09 09:05:51 浏览: 274
linux中 epoll poll 和select的区别
Linux中,poll和select都是用于I/O多路复用的函数,但是它们之间有一些区别。
1. 参数不同: select的参数是一个 fd_set 结构体; poll 的参数是一个 pollfd 的结构体数组。
2. 触发方式不同:select会通过循环遍历的方式扫描所有的 fd,如果没有I/O事件的话会阻塞等待;poll则是将所有的 fd 都加入到一个监听队列中,遍历监听队列查看是否有I/O事件的到来。
3. 扩展性方面不同:因为 select 是一个固定长度的数组,使用时需要设置数组的大小,如果超出了该大小则需要使用其他的方法扩展;poll允许动态的增删 fd,可以根据需要动态的调整大小。
4. 精度问题不同: 可以通过调整 timeout 参数来调整 select 的精度。poll则相对更加精准一些,因为它可以取到更加详细的 I/O 事件信息。
总之, poll 在绝大多数情况下都比 select 更加好用,但是在某些特殊的情况下(例如 Windows 平台下)只支持 select。
阅读全文