Вероятно, это во многом зависит от вашей системы (один процессор?) И рабочей нагрузки (связана ли она с IO, с памятью или с процессором?). Поэтому лучше всего реализовать что-либо и сравнить его. Если вы хотите использовать несколько процессоров и в основном привязаны к процессору, то хорошей идеей будет наличие небольшого пула потоков (но не одного на соединение). Если вы ограничены в памяти и не занимает много места в памяти, важно использовать один поток - это хорошая идея. Если вы обязаны IO, делайте все, что вам проще всего реализовать, поскольку это не будет иметь никакого значения в общей схеме вещей, но ваше время все еще ценно.
Для записи boost :: asio - это хороший, переносимый способ выполнения асинхронных коммуникаций в C ++.
Кроме того, это не совсем понятно из вопроса, но здесь может быть уместной многоадресная рассылка, которая снимет почти всю нагрузку на сеть с сервера. При условии, что это те же данные, которые вы отправляете всем подписчикам, на это стоит обратить внимание.