Atomic Lock的另一個選擇

在之前”並行運算”的文章中,有提到可以用Interlocked來對整數計算提供變數上的鎖定,是除了lock以外的選擇,但因為只有整數,在現實的情況下是不符合使用情況,尤其對於金錢上的計算,一定會有浮點數,所幸還有DotNext這個第三方函式庫,以下是程式範例:
using DotNext;
using DotNext.Threading;
double td = 4.0;
td.UpdateAndGet(x => {
x++;
return x;
});
Console.WriteLine(td.ToString());
td.AccumulateAndGet(3, (current, v) =>
{
return current + v;
});
Console.WriteLine(td.ToString());
上述的程式碼,對於double型別有提供擴充方法,可以使用UpdateAndGet或AccumulateAndGet,用哪個都可以,依實際的情況去採用即可。
參考資料