for或Parallel.For在.NET 4.0中

时间:2013-03-15 11:06:26

标签: .net .net-4.0 parallel-processing

有人可以建议某人应该使用 for 循环而不是 Parallel.For NET 4.0 Framework

我在使用for和Parallel.For上做了一个特定的长算法的小PoC,结果非常支持Parallel.For甚至在单核环境中。

我们可以简单地忽略.NET 4.0 Framework中的 for 循环吗?

1 个答案:

答案 0 :(得分:4)

这里要考虑很多因素:

  • 是循环写入中的代码以支持并发访问?它是线程安全的吗?如果不是:这是一个很大的问题
  • 如果所有线程最终都需要对单个资源(例如UI)进行单独/同步访问,那么从并发中无法获得任何好处
  • 这台机器上还发生了什么?如果这是一个Web服务器,对于一个劫持大量核心的请求, 可能更好
  • 但相反,如果这是一个客户端应用程序,那么请确保:使用大量内核理想情况下尽快释放UI线程
  • 是工作CPU绑定的吗? IO绑定?什么?并行访问单个磁盘轴会使事情变得更糟,而不是更好
  • 线程有开销;并发增加完成的工作总量 - 旨在减少已过去的时间
  • 是在本地完成,还是在其他服务器上完成?如果是这样,那个其他服务器的线程模型是什么?

在大多数情况下,for / foreach都可以。