Если вас беспокоит производительность и масштабируемость, попробуйте IOCP (асинхронное чтение / запись сокетов): Как написать масштабируемый сервер на основе Tcp / Ip
Обратите внимание, что реализовать IOCP намного сложнее, чем «поток на соединение», и, поскольку у вас будет только 50 соединений (или 100 потоков, как вы предлагаете), это может быть «достаточно хорошо» и проще для осуществить правильно.
Попробуйте простой подход и измерьте его ... но если вы либо: нуждаетесь в большей производительности, либо собираетесь масштабировать (далеко?) За пределы 50 соединений, серьезно рассматривайте IOCP как лучшее решение.