民意调查与epoll见解

时间:2012-01-13 22:49:37

标签: c++ c linux gcc

在低延迟环境中使用pollepoll时,是否有一些简单的经验法则?如果只监控少量文件描述符,epoll应该有更高的开销。请提供一些见解,将答案“自己检查”放在其他地方。

3 个答案:

答案 0 :(得分:14)

除非满足以下所有条件,否则请始终使用poll

  1. 您可以确保您拥有epoll的(Linux)系统,或者您可以为不支持的系统提供备用。
  2. 您有一个巨大数量的文件描述符有效(至少1000-10000)。
  3. 您正在使用的文件描述符集在很长一段时间内都是稳定的(从epoll列表中添加/删除文件描述符与poll操作一样昂贵,因为它需要进入/离开内核空间)。

答案 1 :(得分:11)

首先,poll(2)只是水平触发,但epoll(4)可以用作边缘或水平触发的界面。

现在复杂度:poll关于观察描述符数量(fds)的复杂度是O(n),因为它每次发生“就绪”事件时都扫描所有fds,epoll基本上是O( 1)因为它不对所有观察的描述符进行线性扫描。

就可移植性而言 - 由于epoll是特定于Linux的,我建议您查看libevlibevent库。 另外,请查看Dan Kegel的精彩文章:“The C10K problem”。

答案 2 :(得分:3)

epoll(7)简洁地总结了它:epoll“可以很好地扩展到大量观看的文件描述符。”但是,poll是POSIX标准接口,因此在需要可移植性时使用它。