Async-Await против ThreadPool против MultiThreading на высокопроизводительных сокетах (решения C10k?)

Я действительно смущенasync-awaits,poolс иthreads. Основная проблема начинается с этого вопроса: «Что я могу сделать, когда мне приходится обрабатывать ввод / вывод 10k сокетов?» (акаПроблема C10k).

Сначала я попытался создать собственную архитектуру пула с потоками, использующими один основнойQueue и несколькоThreads для обработки всех входящих данных. Это был большой опыт пониманияthread-safety а такжеmulti-threading ноthread являетсяизлишество сasync-await Настоящее время.Позже я реализовал простую архитектуру сasync-await но я не могу понять почему«Ключевые слова async и await не приводят к созданию дополнительных потоков». (из MSDN)? Я думаю, что должно бытьthreads, чтобы делать такие работы, какBackgroundWorker.Наконец, я реализовал другую архитектуру сThreadPool и это похоже на мой первый пользовательский пул.

Теперь я думаю, что должен быть кто-то еще со мной, кто запутался в обращенииC10k, Мой проект - это выделенный (центральный) сервер для моего игрового проекта, подобный серверу хаб / лоббиMCSGЛобби или COD сватовства серверов. Я буду выполнять операции входа в систему, выполнения / запросы команд игрового сервера и обслуживание информации (например, версию, патч).

Последняя часть может быть более конкретной о моем проекте, но мне действительно нужны некоторые хорошие предложения о реальных решениях о множественной (тяжелой) обработке данных.

(Также да, обработка соединения 1k-10k-100k в зависимости от аппаратного обеспечения сервера, но это общий вопрос)

Ключевой момент:Выбор между библиотекой параллельных задач и ThreadPool (Блог MSDN)

[ДОПОЛНИТЕЛЬНЫЕ] Хорошие (базовые) вещи для чтения, кто хочет понять, о чем мы говорим:

ПотокиAsync, AwaitThreadPoolBackgroundWorker

Ответы на вопрос(2)

Ваш ответ на вопрос