Parallel.For(): 在循环外更新变量

14 浏览
0 Comments

Parallel.For(): 在循环外更新变量

我正在研究新的.NET 4.0功能。为此,我尝试使用Parallel.For和普通的for(x;x;x)循环进行简单计算。

然而,大约有50%的时间我得到不同的结果。

long sum = 0;
Parallel.For(1, 10000, y =>
    {
        sum += y;
    }
);
Console.WriteLine(sum.ToString());
sum = 0;
for (int y = 1; y < 10000; y++)
{
   sum += y;
}
Console.WriteLine(sum.ToString());

我猜测是线程试图同时更新"sum"的原因。

有没有明显的解决方法?

0