首页 > Windows开发 > 详细

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

时间:2019-04-10 21:00:01      阅读:231      评论:0      收藏:0      [点我收藏+]

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

 

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中原有的值。

用法举例:

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

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

原文:https://www.cnblogs.com/kelelipeng/p/10685916.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!