0

有人可以建议某人应该在哪里使用for循环而不是Parallel.For in 。NET 4.0 框架

我在特定的长算法上使用 for 和 Parallel.For 进行了小型 PoC,结果非常支持 Parallel.For,即使在单核环境中也是如此。

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

4

1 回答 1

4

这里有很多因素需要考虑:

  • 循环内的代码是为支持并发访问而编写的吗?它是线程安全的吗?如果不是:那是个大问题
  • 如果所有线程最终都需要立即对单个资源(例如 UI)进行定向/同步访问,那么并发性就没有任何好处
  • 这台机器上还发生了什么?如果这是一个 Web 服务器,最好不要让一个请求劫持大量内核
  • 但相反,如果这是一个客户端应用程序,那么肯定:使用大量内核尽快释放 UI 线程
  • 工作 CPU 是否受限?IO绑定?什么?并行访问单个磁盘主轴会使事情变得更糟,而不是更好
  • 线程有开销;并发性增加了完成的总工作量——目的是减少经过的时间
  • 它是在本地完成的,还是在不同的服务器上完成的?如果是这样,其他服务器的线程模型是什么?

在大多数情况下,for/foreach很好。

于 2013-03-15T11:11:46.780 回答