我正在考虑在 ASP.NET 应用程序中使用一些 PLINQ 来增加我们拥有的一些 I/O 绑定和计算绑定处理的吞吐量(例如,迭代一个集合以用于 Web 服务调用并计算一些地理坐标距离)。
我的问题是:我是否应该担心正在运行的操作Parallel.ForEach
会占用线程来处理其他请求,或者它是否使用单独的线程池(我听说过称为 I/O 完成端口的东西,但不确定它是如何发挥作用的进入讨论)?
我正在考虑在 ASP.NET 应用程序中使用一些 PLINQ 来增加我们拥有的一些 I/O 绑定和计算绑定处理的吞吐量(例如,迭代一个集合以用于 Web 服务调用并计算一些地理坐标距离)。
我的问题是:我是否应该担心正在运行的操作Parallel.ForEach
会占用线程来处理其他请求,或者它是否使用单独的线程池(我听说过称为 I/O 完成端口的东西,但不确定它是如何发挥作用的进入讨论)?
Parallel.ForEach
最多将一个线程用于尽可能多的内核。线程池的默认最大大小是您拥有的核心数的 250 倍。因此,您必须真正尝试用完可用线程。