<分区>
我读到在 ASP.NET 网络应用程序中使用 Task.Run 是一个坏主意,因为它使用线程池中的另一个线程,因此阻止了这个特定线程被用于处理请求。
Parallel.ForEach 不也是这样吗?它不会使用线程池中的多个线程,从而防止这些特定线程被用于处理请求吗?
<分区>
我读到在 ASP.NET 网络应用程序中使用 Task.Run 是一个坏主意,因为它使用线程池中的另一个线程,因此阻止了这个特定线程被用于处理请求。
Parallel.ForEach 不也是这样吗?它不会使用线程池中的多个线程,从而防止这些特定线程被用于处理请求吗?
最佳答案
Isn't the same problem with Parallel.ForEach? Won't it use multiple threads from the thread pool and hence prevent these particular threads from being used to serve a request?
是的,会的。这意味着您会通过像这样用完多个请求来降低服务器的总吞吐量。那个个别请求会更快完成,但它会更快地完成,以牺牲其他请求为代价。
这还假设您的机器处于高负载下。如果线程池上没有足够高的负载,那么它可以为该请求分配更多资源,而不会抑制服务其他请求的能力,并且为该请求分配更多资源可能会加速该请求。
关于c# - Parallel.ForEach 是否使用 ASP.NET 线程池中的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42820555/