select
siempre entrega descriptores a kernel al llamar select()
.
Pero epoll
entrega el descriptor una vez cuando se llama al epoll_ctl()
y recibe eventos llamando al epoll_wait()
.
Y bucle 0 a max_descriptor para comprobar eventos al utilizar select
.
Pero el bucle para el evento ocurrió descriptores para verificar eventos cuando se usa epoll
.
Esto hace la diferencia en el rendimiento.
Y select
tiene un límite de número máximo de descriptores porque usa una matriz de bits.
Pero epoll
no tienen un límite porque usa la matriz de estructura.
Y select
existe en la mayoría de las plataformas (Windows, Linux, Unix, BSD)
Pero epoll
existe sólo en Linux.
Por supuesto, existe reemplazos de epoll
en otras plataformas (IOCP en ventanas, kqueue en BSD, etc ..)
http://stackoverflow.com/questions/2032598/caveats-of-select-poll-vs -epoll-reactors-in-twisted – Young