C#中原子性的读取-修改-写入操作

3

我见过一些地方引用了C#规范中的以下内容:“除了专门设计用于此目的的库函数外,没有原子读取修改写入的保证。” 有人可以指向这些库函数吗?

2个回答

4

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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接