在之前”並行運算”的文章中,有提到可以用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型別有提供擴充方法,可以使用UpdateAndGetAccumulateAndGet,用哪個都可以,依實際的情況去採用即可。

參考資料