gpt4 book ai didi

c# - 这个 'double +=' 线程安全吗?

转载 作者:行者123 更新时间:2023-12-04 01:45:10 25 4
gpt4 key购买 nike

这行代码在 Parallel.For(...row => { code }); 中执行;

mechanismScores[row] += cellValue;

数组值和 cellValue 都是 double 类型。这个线程是安全的还是我需要做类似...

Interlocked.CompareExchange(ref mechanismScores[row], 
mechanismScores[row] + cellValue, mechanismScores[row]);

还是其他解决方案?

最佳答案

如果您有并行循环,其中每次迭代访问数组中的不同项,并且没有其他代码同时访问该数组,那么您的代码是线程安全的。

如果两次迭代可以访问数组中的相同索引,则需要某种同步,方法是使用 lock 或正确使用 Interlocked.CompareExchange() (正如 Michael Burr 所指出的,您的示例并不安全)。

关于c# - 这个 'double +=' 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17332738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com