我不知道为什么,但我似乎无法完全理解Interlocked.CompareExchange(ref int a, int b, int c)
.
如果它只是在单线程环境中天真地实现,有人可以告诉我它会做什么吗?
即它用“做那个......但是作为一个原子的、线程安全的操作”来代替什么代码?
这是我对代码的理解(在单线程领域):
static int CompareExchange(ref int location1, int value, int comparand)
{
var valueToReturn = location1;
if (location1 == comparand)
{
location1 = value;
}
return valueToReturn;
}
取自此处的文档:https : //docs.microsoft.com/en-us/dotnet/api/system.threading.interlocked.compareexchange
参数
评论
如果 comparand 和 location1 中的值相等,则 value 存储在 location1 中。否则,不执行任何操作。比较和交换操作作为原子操作执行。无论是否发生交换,CompareExchange 的返回值都是 location1 中的原始值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句