我见过一些地方引用了C#规范中的以下内容:“除了专门设计用于此目的的库函数外,没有原子读取修改写入的保证。” 有人可以指向这些库函数吗?
我见过一些地方引用了C#规范中的以下内容:“除了专门设计用于此目的的库函数外,没有原子读取修改写入的保证。” 有人可以指向这些库函数吗?
我认为它是指像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);
}