我查看了poll
,epoll
和select
之间的差异。我不明白的是我应该何时使用select
。鉴于poll
和epoll
拥有select
所拥有的所有内容,我认为没有任何优势。
答案 0 :(得分:0)
从历史上看,select
于 1983 年在 BSD4.2 中首次出现。作为第一,它有幸成为最流行和最便携的。
也就是说,select
和 poll
的扩展都非常糟糕。根据{{1}},select
缩放到O(highest_fd)
,poll
缩放到O(total_fds)
。 LIBEV(3)
对于大量文件描述符的扩展性更好,但仅适用于 Linux。
使用 epoll
、libevent
或 libev
等事件库将提供一个抽象层并尝试使用系统上性能最高的方法,因此您不必担心在 libuv
、select
、poll
或 epoll
(适用于 MacOS 和 BSD)之间进行选择。
答案 1 :(得分:-1)
select()监视文件描述符少于poll()。 而且,select()的一些实现只是使用poll()。