C#学习 - 关于Interlocked.CompareExchange()的用法
Interlocked.CompareExchange有一组函数
名称 | 说明 |
CompareExchange(Double, Double, Double) | 比较两个双精度浮点数是否相等,如果相等,则替换第一个值。 |
CompareExchange(Int32, Int32, Int32) | 比较两个 32 位有符号整数是否相等,如果相等,则替换第一个值。 |
CompareExchange(Int64, Int64, Int64) | 比较两个 64 位有符号整数是否相等,如果相等,则替换第一个值。 |
CompareExchange(IntPtr, IntPtr, IntPtr) | 比较两个平台特定的句柄或指针是否相等,如果相等,则替换第一个。 |
CompareExchange(Object, Object, Object) | 比较两个对象是否相等,如果相等,则替换第一个对象。 |
CompareExchange(Single, Single, Single) | 比较两个单精度浮点数是否相等,如果相等,则替换第一个值。 |
CompareExchange<T>(T, T, T) | 比较两个指定的引用类型的实例 T 是否相等,如果相等,则替换第一个。 |
现在以
public static int CompareExchange(
ref int location1,
int value,
int comparand
)
为例说明其运算过程:
比较location1与comparand,如果不相等,什么都不做;如果location1与comparand相等,则用value替换location1的值。无论比较结果相等与否,返回值都是location1中原有的值。
用法举例:
while (Interlocked.CompareExchange(ref _lastRead, index + 1, index) < index)
{
}
_lastRead与index一直进行,直到相等为止,此时将_lastRead设置为 index + 1
————————————————
版权声明:本文为CSDN博主「名叫猫的鱼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jianhui_wang/article/details/80485517