我看过几个地方引用了C#规范的以下内容:“除了为此目的设计的库函数之外,不能保证原子读 - 修改 - 写。”有人能指点我这些库函数吗?
答案 0 :(得分:4)
Interlocked课程应该为你提供你想要的东西;例如Increment和Decrement。
答案 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);
}