Re: [Этюд] - синхронный vs асинхронный
От: pilgrim_ Россия  
Дата: 30.09.21 16:27
Оценка: 3 (1)
Здравствуйте, Shmj, Вы писали:

S>Сразу код: синхронный вариант и асинхронный вариант метода (SyncMethod и AsyncMethod):


S>Итак, если запустить код — то увидим, что синхронный вариант отработает за 1-2 секунды а асинхронный — около 1 минуты (примерно, не ждал до конца). Но есть минус — в синхронном варианте внутри мы вызываем внешние асинхронные методы и каждый раз вынуждены их обессинхронивать — что не гуд.


S>Вопрос: как сделать, чтобы асинхронный метод отрабатывал так же быстро?


Установить мин. кол-во потоков в пуле в 1000 (ThreadPool.SetMinThreads). Это не бесплатно ессн, но если очень надо .
Связанно в политикой создания новых потоков в пуле, по умолчанию насколько я помню когда кол-во потоков в пуле превышает некоторое значение (где-то кол-во ядер * на некоторую константу), то добавление нового потока в пул происходит с некоторой задержкой (если память не изменяет чуть ли не секунду), и возможно эта задержка даже динамически увеличивается в зависимости от текущего размера пула.

ps: так было в большом .NET, насчёт Core хз.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.