Как лучше всего обрабатывать входящие сообщения?

Я пишу сервер для онлайн-игры, который в конечном итоге должен уметь обслуживать 1000–2000 клиентов. Я нашел 3 способа сделать это в основном:

  1. 1 поток / соединение (блокирование)
  2. Создание списка клиентов и их перебор (неблокирующий)
  3. Выбрать (в основном оператор блокировки для всех клиентов сразу с необязательным таймаутом?)

Раньше я использовал 1, но, как мы все знаем, он плохо масштабируется. 2 - это нормально, но у меня смешанные чувства по поводу того, что один клиент технически может заставить всех остальных замерзнуть. 3 звучит интересно (немного лучше, чем 2), но я слышал, что он не подходит для слишком большого количества подключений. Итак, как лучше всего это сделать (в D)? Есть ли другие варианты?

8
задан Mars 26 January 2012 в 21:57
поделиться