На коротких сообщениях (меньше MTU) такого не будет. Вот если будете в одном из потоков слать несколько килобайт, может возникнуть ситуация, когда части сообщений перемешаются.
Пример:
- поток 1 посылает 10000 байт, send вернул 2048
- поток 2 в это время записывает короткую команду в этот же сокет
- поток 1 досылает оставшиеся байты, но перед ними уже влезла команда из потока 2
Почему бы не добавить мьютексы? Или несколько сокетов?