Interlocked
Posted yy1234
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Interlocked相关的知识,希望对你有一定的参考价值。
Interlocked
MSDN 描述:为多个线程共享的变量提供原子操作。主要函数如下:
Interlocked.Increment 原子操作,递增指定变量的值并存储结果。
Interlocked.Decrement 原子操作,递减指定变量的值并存储结果。
Interlocked.Add 原子操作,添加两个整数并用两者的和替换第一个整数
Interlocked.CompareExchange(ref a, b, c); 原子操作,a参数和c参数比较, 相等b替换a,不相等不替换。
下面是个interlock anything的例子:
public static int Maximum(ref int target, int value) int currentVal = target, startVal, desiredVal; //记录前后值 do startVal = currentVal; //记录循环迭代的初始值。 desiredVal = Math.Max(startVal, value); //基于startVal和value计算期望值desiredVal //高并发下,线程被抢占情况下,target值会发生改变。 //target startVal相等说明没改变。desiredVal 直接替换。 currentVal = Interlocked.CompareExchange(ref target, desiredVal, startVal); while (startVal != currentVal); //不相等说明,target值已经被其他线程改动。自旋继续。 return desiredVal;
以上是关于Interlocked的主要内容,如果未能解决你的问题,请参考以下文章