Я хочу создать высокопроизводительный сервер на C#, который может занять около ~ 10 тыс. Клиентов. Теперь я начал писать TcpServer с C#, и для каждого клиентского соединения я открываю новый поток. Я также использую один поток для приема соединений. Пока все хорошо, отлично работает.Async threaded tcp server
Сервер должен десериализовать входящие объекты AMF, выполнить некоторую логику (например, сохранить позицию игрока) и отправить какой-либо объект обратно (сериализация объектов). Я не беспокоюсь о сериализации/десериализации части atm.
Моя главная проблема заключается в том, что у меня будет много потоков с 10k-клиентами, и я где-то читал, что ОС может содержать только несколько потоков hunderd.
Есть ли источники/статьи для написания достойного асинхронного многопоточного сервера? Существуют ли другие возможности или будут работать потоки 10k? Я посмотрел на Google, но я не мог найти много информации о шаблонах дизайна или способах, которые его объясняют.
Пока я согласен, потоки 10k - это не путь. 32-битные окна могут легко создавать потоки 10k. http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx –
«Базовый стек ядра составляет 12 КБ на 32-битной Windows и 24 КБ на 64-битной Windows. 14,225 потоков требуют около 170 МБ резидентная доступная память ", http://blogs.technet.com/markrussinovich/archive/2009/07/08/3261309.aspx –
Да, удача управляется потоком с нулевым стеком. –