У меня есть цикл foreach, который я распараллеливаю, и я заметил что-то странное. Код выглядит как
double sum = 0.0;
Parallel.ForEach(myCollection, arg =>
{
sum += ComplicatedFunction(arg);
});
// Use sum variable below
Когда я использую обычный цикл foreach, я получаю разные результаты. Внутри ComplicatedFunction может быть что-то еще глубже, но возможно, что переменная sum подвержена неопределенному влиянию распараллеливания?