我正在使用遗传算法构建优化程序。我使用 Parallel.For 来减少时间。但它导致了一个与下面的代码相同的问题:
class Program
{
static void Main(string[] args)
{
int j=0;
Parallel.For(0, 10000000, i =>
{
j++;
});
Console.WriteLine(j);
Console.ReadKey();
}
}
每次我运行上面的程序时,它都会在 0 到 10000000 之间写入一个不同的 j 值。我猜它不会等待所有迭代完成。它传递到下一行。我应该如何解决这个问题?任何帮助将不胜感激。谢谢。
版本:Interlocked.Increment(ref j); 子句解决了意外的结果,但是当我与正常的 for 循环相比时,此操作会导致大约 10 倍的时间。