Использование ThreadPool.QueueUserWorkItem в ASP.NET в сценарии с высоким трафиком

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

Так вот'как ядо сих пор выполнял небольшие асинхронные задачи:

ThreadPool.QueueUserWorkItem(s => PostLog(logEvent))

А такжестатья вместо этого предлагает явно создать поток, похожий на:

new Thread(() => PostLog(logEvent)){ IsBackground = true }.Start()

Первый метод имеет преимущество в том, что он управляем и ограничен, ноСуществует вероятность (если статья верна), что фоновые задачи затем соперничают за потоки с обработчиками запросов ASP.NET. Второй метод освобождает ThreadPool, но за счет того, что он неограничен и, следовательно, потенциально использует слишком много ресурсов.

Итак, мой вопрос, является ли совет в статье правильным?

Если ваш сайт получал так много трафика, что ваш ThreadPool был заполнен, то лучше выйти из диапазона, или полный поток ThreadPool подразумевает, что вы 'в любом случае, вы получаете доступ к пределу своих ресурсов, в этом случае вам не следуетпытаться начать свои собственные темы?

Пояснение: яя просто спрашиваю в рамках небольших некритических асинхронных задач (например, удаленное ведение журнала), не дорогих рабочих элементов, которые потребовали бы отдельного процесса (в этих случаях я согласен, что вы 'понадобится более надежное решение).

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

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