c - 当我们有 poll() 和 epoll() 时,为什么要使用 select()

标签 c sockets posix-select

我查看了 pollepollselect 之间的区别。我不明白的是什么时候应该使用select。我没有看到任何优势,因为 pollepoll 拥有 select 拥有的一切,甚至更多。

最佳答案

从历史上看,select 在 1983 年首先出现在 BSD4.2 中。作为第一个,它具有最普遍和最便携的特权。

就是说,selectpoll 都非常可伸缩。根据 LIBEV,select 缩放到 O(highest_fd)pollO(total_fds) (3)epoll 对于大量文件描述符的扩展性更好,但仅特定于 Linux。

使用诸如 libeventlibevlibuv 之类的事件库将提供一个抽象层,并尝试在您的计算机上使用最高效的方法系统,因此您不必担心在 selectpollepollkqueue 之间进行选择(适用于 MacOS 和 BSD)。

关于c - 当我们有 poll() 和 epoll() 时,为什么要使用 select(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18020812/

相关文章:

c - 未创建多个队列 - C

c - RegSetValueEx 返回 ERROR_SUCCESS 但没有值显示

c - 无法正确解释 c 程序中 system() 的返回值

c - 零超时的非阻塞 connect() 和 select() 返回 0

c# - 在 Unity3d 中构建 WebGL 的 HTTPS 客户端

c - C select() 函数是否已弃用?

c - 用FD_SET制作读写集,用于在C中发送和接收数据

c - 为什么 C 变量的内存地址不固定?

node.js - 套接字IO错误 "Access to XMLHttpRequest has been blocked by CORS policy"