我正在寻找更好的方法Interlocked.Add(ref double, double)
。
第一种方式,Interlocked.Add(ref long, long)
和一些投射
在并行循环中:
Interlocked.Add(ref ltotalUpSeconds, (long) (av.totalUpSeconds * 1000));
然后在循环之外
totalUpSeconds = ltotalUpSeconds/1000D;
第二种方式,锁定:
lock (parallelocker)
{
totalUpSeconds += av.TotaUpSeconds;
}
我习惯听到lock
比Interlocked
慢。但是,松散的性能值得锁定的可读性吗?
注意:我不介意失去精确度。