【发布时间】:2011-12-08 22:09:24
【问题描述】:
我完全了解poll() 和select() 之间的主要区别:
-
select()只支持固定数量的文件描述符 -
据说更多系统支持
select() -
poll()允许对事件类型进行更细粒度的控制 -
poll()的实现可能在某些细节上有所不同
但是,它们都以大致相同的方式完成相同的任务。所以:
我们应该使用poll() 还是select()?
编辑:我可能会补充一点,我对 epoll() 不感兴趣,因为我关心的是可移植性。此外,libev(ent) 也不是一个选项,因为我问这个问题是因为我正在为libev(ent) 编写自己的替换库。
【问题讨论】:
-
答案可能是
epoll()。 -
epoll()纯粹与 Linux 相关。我应该补充一点,我强调可移植性。 -
你考虑过
pselect吗? -
@Philip:您可能应该将此添加到问题中,因为有大量
epoll狂热者在不了解其局限性或实际有益的极端情况下四处推荐它。跨度> -
你为什么要自己替换 libev(ent)?
标签: c++ c networking network-programming posix