selec和poll的区别
selec和poll的区别
select:
- 文件描述符数量限制:
select
通常有文件描述符数量的限制,这取决于系统和配置,例如在Linux中默认限制为1024。 - 效率:
select
在处理大量文件描述符时效率较低,因为它需要复制整个文件描述符集合到内核空间。 - 返回值:
select
返回就绪的文件描述符数量,需要程序遍历整个文件描述符集合来确定哪些文件描述符就绪。 - 超时:
select
使用timeval
结构体来指定超时时间,如果超时则返回 0。
poll:
- 文件描述符数量限制:
poll
没有对文件描述符数量的硬性限制,理论上可以处理更多的文件描述符。 - 效率:
poll
通过使用一个单独的结构体数组来指定文件描述符,避免了select
中的复制操作,提高了效率。 - 返回值:
poll
返回就绪的文件描述符数量,同样需要程序遍历整个文件描述符集合来确定哪些文件描述符就绪。 - 超时:
poll
使用一个单独的参数来指定超时时间,如果超时则返回 0。