Я просто заглядываю в новые возможности .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());
Я предполагаю, что потоки пытаются обновить "сумму" одновременно.
Есть ли очевидный путь вокруг него?