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

标签 c# asp.net async-await task-parallel-library 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/

相关文章:

c# - 如何使用 Ocelot API 网关重新路由支持 Kubernetes 就绪/事件探测?

c# - 将 GridView 导出到数据表问题

C# if 语句与 dropdownlist.selectedvalue

c# - 为什么带有 await 关键字的异步方法仍然阻塞主线程?

c# - 错误 : unable to start debugging on the server

c# - WPF:如何绑定(bind)到另一个控件绑定(bind)的属性?

c# - 如何使 Html.CheckBoxFor() 在字符串字段上工作?

c# - DbGeography.PointFromText 错误异常已被调用的目标抛出

c# - 如何等待来自不同线程的异步 UI 方法?

c# - 从异步方法关闭 WCF 服务?