escenario actual se epoll_wait lo largo de un par de FDS y una cola de posibles mensajes entrantes, me gustaría que el bucle por debajo epoll_wait a ser ejecutado en caso de IO o el nuevo mensaje.
maneras que sé:epoll_wait con un evento no-IO, no hay señales de
- Utilice un tiempo de espera mseg
time
y compruebe la primera cosa de la cola en el bucle - Uso del self-pipe trick del código de cola cuando los mensajes estén disponibles
- Interrumpir la llamada al sistema con una señal estándar
- uso epoll_pwait y refinar el punto anterior
Ninguno de los puntos anunciados por encima de satisfacer mi enoug h y me preguntaba si hay otros métodos que no he encontrado.
Las razones son:
- Las señales son algo a evitar en el código multiproceso y no son muy fiables
- Tiempo de espera de un solo extrae una parte del beneficio de la epoll, sólo se despierta con los eventos
- Auto-pipe trick miradas el mejor enfoque por el momento, pero aún demasiado repetitivo
ideas?
He usado eventfd con éxito cuando sólo se está a la espera de una epollfd, pero ¿qué pasa con múltiples subprocesos esperan la misma * * epollfd? ¿eventfd es útil en este caso también? ¿si es así, cómo? –