编程语言
首页 > 编程语言> > C#学习 - 关于Interlocked.CompareExchange()的用法

C#学习 - 关于Interlocked.CompareExchange()的用法

作者:互联网

https://blog.csdn.net/jianhui_wang/article/details/80485517

 

Interlocked.CompareExchange有一组函数

 

 名称说明
System_CAPS_pubmethodSystem_CAPS_static CompareExchange(Double, Double, Double)

比较两个双精度浮点数是否相等,如果相等,则替换第一个值。

System_CAPS_pubmethodSystem_CAPS_static CompareExchange(Int32, Int32, Int32)

比较两个 32 位有符号整数是否相等,如果相等,则替换第一个值。

System_CAPS_pubmethodSystem_CAPS_static CompareExchange(Int64, Int64, Int64)

比较两个 64 位有符号整数是否相等,如果相等,则替换第一个值。

System_CAPS_pubmethodSystem_CAPS_static CompareExchange(IntPtr, IntPtr, IntPtr)

比较两个平台特定的句柄或指针是否相等,如果相等,则替换第一个。

System_CAPS_pubmethodSystem_CAPS_static CompareExchange(Object, Object, Object)

比较两个对象是否相等,如果相等,则替换第一个对象。

System_CAPS_pubmethodSystem_CAPS_static CompareExchange(Single, Single, Single)

比较两个单精度浮点数是否相等,如果相等,则替换第一个值。

System_CAPS_pubmethodSystem_CAPS_static CompareExchange<T>(T, T, T)

比较两个指定的引用类型的实例 T 是否相等,如果相等,则替换第一个。

现在以 

public static int CompareExchange(
	ref int location1,
	int value,
	int comparand

)

为例说明其运算过程:

比较location1与comparand,如果不相等,什么都不做;如果location1与comparand相等,则用value替换location1的值。无论比较结果相等与否,返回值都是location1中原有的值。

用法举例:

  1.   while (Interlocked.CompareExchange(ref _lastRead, index + 1, index) < index)
  2.   {
  3.   }
_lastRead与index一直进行,直到相等为止,此时将_lastRead设置为 index + 1

标签:index,相等,C#,替换,location1,int,CompareExchange,Interlocked
来源: https://www.cnblogs.com/kelelipeng/p/10685916.html