Re[7]: Как оптимизировать выполнения 10000 параллельных зада
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 05.08.16 17:05
Оценка:
Здравствуйте, LWhisper, Вы писали:

LW>Так в том то и дело, что изначально 10000 соединений никто не отменял.

LW>Они порождают 10000 тасок. Эти 10000 тасок порождают 10000 потоков. Эти потоки повисают на якобы асинхронном локе. Поток не может вернуться волшебным образом в пул или переключиться на выполнение другой задачи. Он будет висеть до посинения. Единственное, что я могу сделать — это вручную нагрузить его полезной работой. Фактически, async просто предоставляет удобный интерфейс для формирования APC очереди. Просто помимо проблемы 10000 потоков, я получаю довеском проблему исчерпания пула потоков.

А чем поток внутри занимается? Какова нагрузка на процессор?
Если он, что то ожидает то твой то нужно заменить все синхронные операции на асинхронные.
Thread.Sleep заменяется на await Task.Delay().
и солнце б утром не вставало, когда бы не было меня
Отредактировано 05.08.2016 17:23 Serginio1 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.