Шаблон сервера, показанный в примере, на который вы ссылаетесь, в порядке;нет никаких существенных проблем, связанных с тем, что цикл принимает только один сокет за итерацию.
Ключевым моментом, который следует иметь в виду, является то, что в правильно спроектированном цикле select (), only поместить процесс в когда-либо блок внутри вызова select ().В частности, при правильном кодировании сервер никогда не заблокирует внутри send (), recv () или accept ().Лучше всего установить все сокеты в неблокирующий режим (через fcntl (fd, F_SETFL, O_NONBLOCK)), чтобы гарантировать такое поведение.
Учитывая, что точный порядок «какие клиенты обслуживаются первыми в любомособая итерация цикла событий "не имеет значения, потому что все клиентские сокеты обрабатываются очень скоро после того, как у них есть данные, готовые для чтения (или буферное пространство, готовое для записи), и все новые соединения принимаются быстро.