在.NET3.5中优化独立的foreach迭代

时间:2009-10-06 23:26:58

标签: .net multithreading optimization .net-3.5

假设我有

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++;
}

1 个答案:

答案 0 :(得分:12)

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

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

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