Необходимо одновременно держать кучу исходящих tcp соединений (пусть будет ~500). По соединениям в обе стороны бегают сообщения, обмен полностью асинхронный. Как бы это лучше организовать?
Со стороны интерфейса хочется простое AddMessageHandler(host) и SendMessage(host) для установки обработчика входящих и отправки исходящих сообщений. Думаю, как организовать систему внутри. Неблокирующий ввод/вывод получается слишком сложно, ибо select() осложняется наличием других сокетов в системе, требуется обрабатывать неблокирующий connect, нужно держать буфера для не до конца отправленных/принятых сообщений. Другая идея - потоки. С ними логика упрощается очень значительно, ибо все делается последовательно. Читаем сразу сколько нужно; если ошибка делаем socket/connect заново; пишем тоже сразу сколько есть не пугаясь блокировки. Но по потоку на соединение, думается, будет слишком много, т.е надо делать пул потоков?