Я читал, что функция send() на Winsock блокируется до тех пор, пока не будет получен ACK от последнего пакета. Сейчас я играю с сервером для пошаговой ролевой игры. Все обрабатывается одним потоком (для 64 сокетов). Запрос получен, обработан и ответ записан в сокет(ы). Этот процесс нельзя прерывать.
Можно ли с помощью этого метода обработать, скажем, 1000 клиентов (один поток на каждые 64 сокета)?
Разве это не заблокирует весь сервер, если send() займет слишком много времени, или клиент злонамеренно не отправит ACK или соединение будет прервано?
Должен ли я разделить логику сети и обработки запросов на 2 потока? Если это так, поток, обрабатывающий сетевые передачи, все еще может быть заблокирован с помощью send() или recv().
Или было бы лучше использовать перекрывающийся ввод-вывод?