¿Es seguro emitir llamadas de escritura () en el mismo socket TCP desde múltiples hilos?
Digamos que tengo dos hilos, T1 y T2.
El subproceso T1 realiza una llamada de bloqueo de escritura () en un socket TCP S para enviar un gran búfer de bytes B1. El búfer de bytes B1 es tan grande que (a) los bloques de llamada de escritura y (b) TCP tiene que usar varios segmentos para enviar el búfer.
Thread T2 también realiza una llamada de bloqueo de escritura () en el mismo socket TCP S para enviar otro búfer grande de bytes B2.
Mis preguntas son las siguientes:
¿La implementación de TCP en UNIX garantiza que todos los bytes de B1 se enviarán antes que todos los bytes de B2 (o viceversa)?
O es posible que TCP intercale el contenido de B1 y B2 (por ejemplo, TCP envía un segmento con datos B1, luego un segmento con datos B2, y luego un segmento con datos B1 nuevamente).
PD: Sé que no es una buena idea hacer esto. Estoy tratando de determinar si un código que no escribí es correcto o no.