Buenas nuevamente,
para aquellos interesados en la programación en C, una de las cosas mas complicadas de manejar es el asynchronous I/O. Esto es porque ya mayoría de las funciones resultan ser bloqueantes por ende son sincrónicas. Posix C nos plantea 2 implementaciones select y poll, que son funciones para el manejo asincronico de I/O. El problema de estas 2 funciones, es que su implementacion no es para nada bueno y además es MUY lenta, es por ello que en la vida real no se usan ninguna de las 2. En una de las Talks mencionamos que una de las implementaciones mas utilizadas es epoll. Un derivado de poll que fue implementado por primera vez en FreeBSD y luego fue portado a otras plataformas como Solaris y Linux. Aun asi la cosa no termina ahi, ya que tambien esta kqueue y kevent ambas son otra implementacion con la misma finalidad e incluso pueden resultar ser mas rápidas que epoll.
libevent es una librería que nos brinda diferentes implementaciones de funciones para el manejo de I/O asincronico, como por ejemplo: /dev/poll, kqueue, event ports, select, poll y epoll.
http://monkey.org/~provos/libevent/
Esta bueno que en la pagina principal te muestra una serie de benchmarks donde muestra el rendimiento de las implementaciones. Ahi se ve claramente donde epoll y kqueue es varias ( por no decir cientos ) de veces mas rápido que select o poll cuando se manejan grandes cantidades de descriptores.
Otro dato interesante es que libevent nos permite además de manejar descriptores, manejar signals o finalizaciones de timeout.
Saludos!