que tiene una aplicación asíncrona ejecutar varios hilos que realizan operaciones a través de sockets donde se programan las operaciones y luego ejecutado de forma asíncrona.Evitar la reutilización del mismo número fd en una aplicación multi-hilo conector
Estoy intentando evitar una situación cuando una vez programada una operación de lectura sobre un socket, el socket se cierra y vuelve a abrir (posiblemente otro igual en otra operación) antes de que la primera operación comience a ejecutarse, lo que terminará leyendo el descriptor de archivo correcto pero el par incorrecto.
El problema viene porque (aceptar(); close(); aceptar()) devuelve el mismo fd en tanto acepta() que puede conducir a la situación anterior.
no veo una manera de evitarlo.
¿Alguna pista?
¿Por qué el socket que se bloquea en un hilo está siendo cerrado por otro hilo? –
esa es la naturaleza de un sistema asíncrono, una operación lee, otra escribe, otra puede cerrarse, y todas pueden ejecutarse en diferentes subprocesos. –
reconsiderar su enfoque. por lo general, hay un solo hilo que acepta conexiones y engendra hilos para manejarlos. esos hilos son entonces responsables de cerrar la conexión, y ningún otro hilo llega incluso a acceder a esa conexión. –