什么时候不应该在c#中使用新的并行循环函数

时间:2009-11-20 19:46:12

标签: c# parallel-processing

出于可维护性的考虑,我的冲动是一直使用并行处理。对于简单的循环,听起来有一些开销实际上可能会使函数变慢,并且可能对于循环而言,执行顺序会产生差异,这是一个错误。

您如何决定何时使用并行处理以及何时避免它?

1 个答案:

答案 0 :(得分:3)

可能导致问题的事情:

  • 依赖于具有线程亲和力的东西; UI控件; asp.net context
  • 任何具有特定于线程的状态(线程静态/线程本地)
  • 任何具有可变状态和副作用的内容

但更重要的是;你需要它吗?在许多情况下,它是过度的,并且线程总是有一个轻微的开销(总CPU时间增加,即使经过的时间减少)。现在;如果您已经在高度线程化的环境中(例如繁忙的Web服务器),这将无济于事!

有几种情况会自动出现,通常在已过去时间比整体CPU时间更重要时 - 在客户端非常有用,或某些 Web服务器方案。如果状态是不可变的,那么它特别有用,因此将工作分开并将结果重新组合在一起是非常简单的。使用Parallel处理分形等或其他CPU密集型工作有一些很好的例子。