Вы можете использовать сокет для отправки данных в одном потоке и для получения данных в другом потоке одновременно.Вы не можете выполнять одно и то же действие (отправку или получение) на одном и том же сокете из разных потоков.
Тем не менее, всегда старайтесь избегать добавления новых тем, если в этом нет необходимости.Вы можете использовать некоторые функции сокетов ( select , WSAEventSelect ), которые уведомят вас, когда вы сможете выполнять чтение / запись на сокете.Поместите их в цикл в одном потоке, дождитесь событий и обработайте их - читайте и пишите в одном и том же потоке.Если вам нужно обработать полученные данные, а это занимает время, сохраните полученные данные в очереди, совместно используемой другим потоком обработки данных.Конечно, имейте в виду, что вам нужно сделать эту очередь поточно-безопасной и синхронизировать сокет и поток обработки данных.