c# - 何时不应在 C# 中使用新的并行循环函数

标签 c# parallel-processing

出于可维护性的目的,我的冲动是始终简单地使用并行处理。对于简单的循环,听起来好像存在开销,实际上可能会减慢函数的速度,并且对于执行顺序有所不同的循环来说,这是一个错误。

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

最佳答案

会导致问题的事情:

  • 对具有线程关联性的事物的依赖;用户界面控件; asp.net 上下文
  • 任何具有线程特定状态(线程静态/线程本地)的事物
  • 任何具有可变状态和副作用的事物

但更重要的是;你需要它吗?在许多情况下,这是矫枉过正的,并且线程总是有轻微的开销(总CPU时间增加,即使运行时间减少)。现在;如果您已经处于高度线程的环境中(例如繁忙的网络服务器),这不会有帮助!

在一些情况下它会发挥作用,通常是当经过的时间比总体 CPU 时间更重要时 - 因此对于客户端非常有用,或一些网络服务器场景。如果状态是不可变的,那么它特别有用,因此将工作分解并将结果重新组合在一起是非常简单的。有一些使用并行处理分形等或其他CPU密集型工作的很好的例子。

关于c# - 何时不应在 C# 中使用新的并行循环函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1772815/

相关文章:

c# - 我如何在 C# Xamarin 中只接受数字

c# - C# 中的 XAML 代码

mysql - R 中的 doParallel() 和 mySQL : Database not receiving data

c# - 跨线程套接字锁定

c# - 对 C# struct 的工作方式感到困惑

c# - 多阶段状态的嵌套类

c# - 为什么我不能将 List<T> 传递给通用构造函数参数,尽管所有约束都已满足?

parallel-processing - 带有 map 的并行流

c# - 并行循环性能下降

c# - Task.WhenAll 结果排序