Я не совсем уверены в том, что ваш вопрос задает, но звучит как вы борьба с тем, что нужно слушать петля для соединения клиента с выбрать на ваш сервер, но вы также должны сделать полезную работу. Кроме того, в ваших клиентов, вам придется выслушать для пользователя, но в то же время ждать ответа от сервера.
Я не знаю, какой язык вы используете, но я сделал это на PHP, которая ставит тонкой обертки вокруг сокета-система требует, чтобы они очень похожи. Вы, как правило, необходимо решить, следует ли сделать выбор () слово блокирование или нет. Если это не блокирование может быть спиннинг в основном цикле, неоднократно призывая выбора () без каких-либо результатов, и в то же время жевания вверх много процессорного времени.
Вы можете принять решение о выборе тайм-аута, где () блоками по 100 миллисекунд или sobefore решив, что нет данных, и продолжает выполнять другие код. Это может привести к снижению эффективности Вашего заявления, поскольку там могут быть вещи нужно идти в то время как ваши кв спит.
Если это то, что ваш вопрос по поводу, можно проверить в сделать вашу заявку многолетних резьбовые (или многопроцессорная). Эта концепция будет применяться в отношении как сервер и клиент. Вы можете оставить главную нить, работающих за просьбы и делегатом I / O в отдельном потоке и позволить операционной системе заботиться всех графиков. В I / O нить будет стоять в очереди все I / O запросы и основная нить будет действенно их обслуживания, передачу их обратно в I / O нить, когда они завершены. К сожалению, я по-прежнему изучает Threading меня и поэтому я не могу быть столь дополнительной помощи. Она может получить немного волосатый, когда вы имеете дело с многопоточность мультипроцессорная или потому, что вы должны следить за что-то вроде
условия гонок,
затор, А также множество других, связанных с параллельным проблемы.