出于可维护性的目的,我的冲动是始终简单地使用并行处理。对于简单的循环,听起来好像存在开销,实际上可能会减慢函数的速度,并且对于执行顺序有所不同的循环来说,这是一个错误。
您如何决定何时使用并行处理以及何时避免它?
最佳答案
会导致问题的事情:
- 对具有线程关联性的事物的依赖;用户界面控件; asp.net 上下文
- 任何具有线程特定状态(线程静态/线程本地)的事物
- 任何具有可变状态和副作用的事物
但更重要的是;你需要它吗?在许多情况下,这是矫枉过正的,并且线程总是有轻微的开销(总CPU时间增加,即使运行时间减少)。现在;如果您已经处于高度线程的环境中(例如繁忙的网络服务器),这不会有帮助!
在一些情况下它会发挥作用,通常是当经过的时间比总体 CPU 时间更重要时 - 因此对于客户端非常有用,或一些网络服务器场景。如果状态是不可变的,那么它特别有用,因此将工作分解并将结果重新组合在一起是非常简单的。有一些使用并行
处理分形等或其他CPU密集型工作的很好的例子。
关于c# - 何时不应在 C# 中使用新的并行循环函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1772815/