¿La función epoll_wait() devuelve los eventos uno por uno?
Digamos que agrego un socket a un epoll, esperando tanto eventos EPOLLIN como EPOLLOUT, algo así:
struct epoll_event event;
event.events = EPOLLIN | EPOLLOUT;
epoll_ctl(epfd, EPOLL_CTL_ADD, socket, &event);
Si el socket se vuelve legible y escribible, ¿necesitaría llamar a epoll_wait()
dos veces para recibir ambos eventos, o devolverá un epoll_event
con ambos campos establecidos? (Asumiendo que epoll_wait()
se llama con un maxevents
de 1.)
davy.ai
Si el socket se vuelve tanto legible como escribible,
epoll_wait()
devolverá unepoll_event
con ambos campos de bits establecidos. Por lo tanto, no necesitarías llamar aepoll_wait()
dos veces para recibir ambos eventos.