【问题标题】:Optimizing independent foreach iterations in .NET3.5优化 .NET3.5 中的独立 foreach 迭代
【发布时间】:2010-12-04 11:01:27
【问题描述】:

假设我有

foreach(int x in xs[]) // xs is an array of int
{
x++;
}

通过 foreach 的每次都是独立于其他的。 有没有一种快速的方法来指示 CLR 在单独的线程上执行每个操作或通过本机并行化来加速它?

也许它已经知道这样做了。

我知道你可以创建线程并启动它们,但如果我可以设置一个属性或标志来为我处理它,那就太好了。

我的实际代码更复杂,但通过 foreach 的每次迭代在迭代之间也没有影响。

类似

[parallelize maxThreads=5]
foreach(int x in xs[]) // xs is an array of int
{
x++;
}

【问题讨论】:

  • 这还能用吗? int 是一个值类型。
  • 是的,忘记代码示例,这是半伪代码来说明我的观点......

标签: .net multithreading optimization .net-3.5


【解决方案1】:

您可以尝试使用任务并行库中的Parallel.For。如果您获得正确的粒度,这可能会非常有效。有关详细信息,请参阅以下文章:

优化多核机器的托管代码
http://msdn.microsoft.com/en-us/magazine/cc163340.aspx

.NET 3.5 SP1 的任务并行库can be downloaded from this page。这是direct link.

【讨论】:

  • 这太棒了!感谢您的提示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-14
  • 2021-07-25
  • 2013-05-29
  • 2019-09-07
  • 1970-01-01
  • 2021-08-15
相关资源
最近更新 更多