select () имеет тенденцию ухудшаться для больших наборов сокетов из-за необходимости перестроения fd_set и способа, которым это дает результаты.
API epoll () в Linux, пожалуй, мой любимый метод работы с несколькими сокетами. Вы можете быстро взглянуть на него, но он не доступен в Windows.
Я считаю, что единственный способ обойти ограничения select () для Windows с таким количеством сокетов - это использовать порты завершения ввода-вывода.