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
C#学习 - 关于Interlocked.CompareExchange()的用法的更多相关文章
- Interlocked.CompareExchange
class SourceManager { private SourceManager() { } private static SourceManager sourceManager; public ...
- JAVA学习笔记 (okHttp3的用法)
最近的项目中有个接口是返回文件流数据,根据我们这边一个验签的插件,我发现里面有okHttpClient提供了Call.Factory,所以就学习了下okHttp3的用法. 1.概述 okhttp是一个 ...
- 触发器学习笔记(:new,:old用法)
触发器学习笔记(:new,:old用法) 触发器是数据库发生某个操作时自动运行的一类的程序 用于保持数据的完整性或记录数据库操作信息方面 触发器不能够被直接调用,只能够 ...
- 孤荷凌寒自学python第七十天学习并实践beautifulsoup对象用法3
孤荷凌寒自学python第七十天学习并实践beautifulsoup对象用法3 (完整学习过程屏幕记录视频地址在文末) 今天继续学习beautifulsoup对象的属性与方法等内容. 一.今天进一步了 ...
- 孤荷凌寒自学python第六十九天学习并实践beautifulsoup对象用法2
孤荷凌寒自学python第六十九天学习并实践beautifulsoup对象用法2 (完整学习过程屏幕记录视频地址在文末) 今天继续学习beautifulsoup对象的属性与方法等内容. 一.今天进一步 ...
- Java8 新特性学习 Lambda表达式 和 Stream 用法案例
Java8 新特性学习 Lambda表达式 和 Stream 用法案例 学习参考文章: https://www.cnblogs.com/coprince/p/8692972.html 1.使用lamb ...
- 学习SDAutoLayout第三方库的用法总结
---恢复内容开始--- 在做图文混排计算高度我觉得SDAutoLayout布局是最好用的第三方库了,这里学习SDAutoLayout用法总结一下 用法介绍: ) 方法名中带有“SpaceToView ...
- Matplotlib学习---matplotlib的一些基本用法
Matplotlib有两种接口,一种是matlab风格接口,一种是面向对象接口.在这里,统一使用面向对象接口.因为面向对象接口可以适应更复杂的场景,在多图之间进行切换将变得非常容易. 首先导入matp ...
- Django 学习笔记之模型高级用法
目录 1 复杂的字段类型 1.1 整数类型的区别 1.2 自增类型的区别 1.3 时间类型 1.4 FilePathField 1.5 FileField 1.6 ImageField 2 关系字段 ...
随机推荐
- Python03 字符串类型、强制类型转化、列表、元组、字典、集合
1 字符串类型 在python中字符串类型用str表示,字符串的连接用 + 1.1 创建字符串对象 ·创建一个字符串对象有两种方式,一种方式是直接用字符串进行赋值,另外一种是利用str类实例化对象:具 ...
- 04 UUID
1 什么是UUID UUID 的目的是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定. 2 应用场景 MySQL数据库不能想oracle数据库那样创建序列,就 ...
- 使用zookeeper实现服务路由和负载均衡
三个类: ServiceAProvider ServiceBProvider ServiceConsumer 其中 ServiceAProvider提供的服务名service-A,指向IP为192.1 ...
- Amazon S3 云服务
一.简介 Amazon Simple Storage Service (S3) 是一个公开的服务,Web 应用程序开发人员可以使用它存储数字资产,包括图片.视频.音乐和文档. S3 提供一个 REST ...
- GCD学习(六) dispatch_async 和dispatch_sync
dispatch_sync(),同步添加操作.他是等待添加进队列里面的操作完成之后再继续执行. dispatch_queue_t concurrentQueue = dispatch_queue_cr ...
- vue 之 表单输入绑定
vue的核心:声明式的指令和数据的双向绑定. 那么声明式的指令,已经给大家介绍完了.接下来我们来研究一下什么是数据的双向绑定? 另外,大家一定要知道vue的设计模式:MVVM M是Model的简写,V ...
- xml元素类型PCDATA和CDATA的区别(DTD中)
PCDATAPCDATA 的意思是被解析的字符数据(parsed character data).可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本.PCDATA 是会被解析器解析的文 ...
- 自定义MVC的Helper扩展方法 转 Insus.NET
记得在开发ASP.NET时候,也经常性使用C#可以写自己义的扩展方法,如: http://www.cnblogs.com/insus/p/3154363.html 或http://www.cnblog ...
- C#实现截图
语言环境 框架: .NET Framework 3.5IDE: VS2013窗体A(主窗体) /// <summary>/// 点击弹出截屏窗体/// </summary>// ...
- Memcached Cache
using System; using System.Collections.Generic; using System.Linq; using System.Web; using Memcached ...