C#中的原子读 - 修改 - 写

时间:2011-01-11 19:36:19

标签: c# .net multithreading concurrency

我看过几个地方引用了C#规范的以下内容:“除了为此目的设计的库函数之外,不能保证原子读 - 修改 - 写。”有人能指点我这些库函数吗?

2 个答案:

答案 0 :(得分:4)

Interlocked课程应该为你提供你想要的东西;例如IncrementDecrement

答案 1 :(得分:3)

我认为它指的是诸如Interlocked.CompareExchange之类的功能。

此方法可用于,例如,以原子方式更新double

static void Add(ref double field, double amount)
{
    double before, after;
    do
    {
        before = field;
        after = before + amount;
    }
    while (Interlocked.CompareExchange(ref field, after, before) != before);
}