Rob*_*b L 2 c# parallel.foreach
这行代码正在Parallel.For(... row => {code})中执行;
mechanismScores[row] += cellValue;
Run Code Online (Sandbox Code Playgroud)
数组值和cellValue都是double类型.这个线程是安全的还是我需要做...
Interlocked.CompareExchange(ref mechanismScores[row],
mechanismScores[row] + cellValue, mechanismScores[row]);
Run Code Online (Sandbox Code Playgroud)
或其他解决方案?
如果您有并行循环,其中每次迭代访问数组中的不同项,并且没有其他代码同时访问该数组,那么您的代码是线程安全的.
如果两次迭代可以访问数组中的相同索引,则需要某种同步,通过使用lock或Interlocked.CompareExchange()正确使用(正如Michael Burr指出的那样,您的示例不安全).