Допустим, у меня есть два потока, T1 и T2.
Поток T1 выполняет блокирующий вызов write () на TCP-сокете S для отправки большого буфера байтов B1. Буфер байтов B1 настолько велик, что (a) блоки вызова записи и (b) TCP должны использовать несколько сегментов для отправки буфера.
Поток T2 также выполняет блокирующий вызов write () в том же TCP-сокете S для отправки другого большого буфера байтов B2.
Мои вопросы таковы:
Гарантирует ли реализация TCP в UNIX, что все байты B1 будут отправлены раньше всех байтов B2 (или наоборот)?
Или возможно, что TCP перемежает содержимое B1 и B2 (например, TCP отправляет сегмент с данными B1, затем сегмент с данными B2, а затем снова сегмент с данными B1).
PS - Я знаю, что это плохая идея. Я пытаюсь определить, верен ли какой-то код, который я не написал.