Вы используете tcp, значит организовать можно как угодно, 'биты будут сочиться'
Мало того, чтобы утилизировать несколько сетевых устройств, потоки создавать не обязательно, если использовать асинхронные сокеты (в linux это зовется неблокирующие, флаг socket() - SOCK_NONBLOCK), любым удобным для вас инструментом, то простая передача данных не потребует особых ресурсов и спокойно отработает на одном ядре (исключение - 10+гбитный поток, ну может речь уже должна идти о 100+гбит? это на грани возможностей железа и для него нужно использовать специализированные инструменты, предоставляемые сетевой картой, а значит про tcp придется забыть, хотя хз может там все уже удобно сделали)