Parallel.ForEach是否使用ASP.NET线程池中的线程?

Ant*_*uet 2 c# asp.net task-parallel-library async-await parallel.foreach

我已经读过在ASP.NET Web应用程序中使用Task.Run是一个坏主意,因为它使用来自线程池的另一个线程,因此阻止这个特定的线程用于提供请求.

Parallel.ForEach的情况不一样吗?它是否会使用线程池中的多个线程,从而阻止这些特定线程用于提供请求?

Ser*_*rvy 6

Parallel.ForEach不是同样的问题吗?它是否会使用线程池中的多个线程,从而阻止这些特定线程用于提供请求?

是的,它会的.这意味着您可以通过让请求使用这样的多个请求来降低服务器的总吞吐量.这单独的请求会完成得更快,但它会更快完成在其他请求的费用.

这也假设您的机器处于高负载状态.如果线程池上没有足够高的负载,那么它可以为该请求专用更多资源而不会抑制其他请求的服务能力,并且为该请求专用更多资源可能会加速该请求.