escribir llamadas a funciones desde múltiples hilos en el mismo socketes seguro usar la función de escritura en GNU C usando múltiples hilos
¿es seguro? ¿Queríamos agregar una sincronización entre ellos? ¿Causará problemas lado a otro como Aplicación conseguir retrasó escritura/lectura de la capa de red de capa de aplicación
Estamos utilizando GNU C++ bibliotecas GCC 4 en Linux RedHat Enviornment
Este es un proceso del lado del servidor, donde Sólo hay 1 zócalo de conectividad entre el servidor Cliente servidor & & cliente son el 2 diffent Máquinas de datos se envía del servidor al cliente cliente al servidor
Problema 1-cuando el servidor envían datos al cliente (múltiples Hilos Escribir dat a del lado del cliente a través del mismo zócalo único) Pero los datos escritos de algunos de los hilos no se han ido al lado del cliente, ni siquiera han ido a la red Capa del mismo equipo (Tcpdump no tiene esos datos)
Problema 2-cuando el cliente envía datos a Server Data Send By Client se muestra en el TCPdump del servidor no recibido para la aplicación del servidor que está leyendo desde el socket desde un solo hilo usando "leer" & "seleccionar" funciones en un bucle
No pudimos identificar el patrón de ocurrencia de estos problemas. Pensamos que esto sucedió cuando tantos hilos múltiples están escribiendo en el mismo zócalo. No estamos sincronizados con la función de escritura esperando que el sistema operativo maneje la sincronización
Es "seguro" en el sentido de que su programa está bien formado, pero los resultados que ve en su socket pueden no ser los que espera. –
@KerrekSB: es un comentario extraño. Cualquier programa inseguro de subprocesos podría llamarse "seguro" en ese sentido, ¿no? –
@NedBatchelder: seguramente no. Por ejemplo, una función que depende de un búfer estático para su mantenimiento de estado interno es simplemente * no * seguro para subprocesos, y un programa que lo llama varias veces al mismo tiempo está mal definido. Por el contrario, un programa que llama 'write' al mismo tiempo no está mal definido automáticamente. –