В настоящее время я пытаюсь выяснить, каков наилучший способ минимизировать количество потоков, которые я использую на главном сервере TCP, для максимизации производительности.
Как я недавно много читал с новыми функциями асинхронности в C # 5.0, асинхронность не обязательно означает многопоточность. Это может означать разделение на более мелкие порции объектов конечного состояния, а затем обработка поочередно с другими операциями. Однако я не понимаю, как это можно сделать в сети, поскольку я в основном "жду" ввода (от клиента).
Поэтому я бы не использовал ReceiveAsync () для всех своих сокетов, он просто непрерывно создавал и заканчивал потоки (при условии, что создает создания потоков).
Следовательно, мой вопрос более или менее таков: какую архитектуру может использовать главный сервер, не имея одного «потока» на соединение?
Дополнительный вопрос для бонусных баллов крутости: почему плохо работать с несколькими потоками, учитывая, что количество потоков, превышающее количество обрабатывающих ядер, просто делает машину "фальшивой" многопоточностью, как любой другой асинхронный метод?