C# 5.0 与 .Net 4.5 学习(三)Interlocked
2015-10-22 08:41
726 查看
Interlocked类是用于对变量进行原子操作的简单语句。如i++不是线程安全,它从内存中获得一个值,然后将这个值加1,然后又将值存回到内存中。这些操作可能被线程调度器中断。Interlocked类就提供了对增、减、改、读的方法的线程安全行为。
使用Interlocked类比其他同步技术更快捷。然而,你只能在简单的同步问题上去使用它。
例如,当赋予someState变量新值时以防值为null我们不使用lock锁,而选择使用更快捷的Interlocked类(代码文件SynchronizationSamples/SharedState.cs):
使用lock方式:
Interlocked方式:
使用Interlocked类比其他同步技术更快捷。然而,你只能在简单的同步问题上去使用它。
例如,当赋予someState变量新值时以防值为null我们不使用lock锁,而选择使用更快捷的Interlocked类(代码文件SynchronizationSamples/SharedState.cs):
lock (this) { if (someState == null) { someState = newState; } }
Interlocked.CompareExchange<SomeState>(ref someState, newState, null);
使用lock方式:
public int State { get { lock (this) { return ++state; } } }
Interlocked方式:
public int State { get { return Interlocked.Increment(ref state); } }
相关文章推荐
- C#学习之 调用 AForge.NET框架启动摄像头抓拍
- C#反射机制
- C#学习之 调用 AForge.NET Framework 启动摄像头
- C#判断大小端并转换int数据
- session的存储方式和配置
- session与cookie的区别
- C#: log4net
- C#语言的基础
- C#中DataGridView控件的数据绑定
- C# 之 管理配置文件(一)
- (原创)c#学习笔记04--流程控制04--循环04--循环中断和无限循环
- (原创)c#学习笔记04--流程控制04--循环03--for循环
- C# 之 获取当前路径
- (原创)c#学习笔记04--流程控制04--循环02--while循环
- (原创)c#学习笔记04--流程控制04--循环01--do循环
- 心跳程序
- C#中的多文档的使用
- 从C#中的引用类型到String
- C#学习日记29----二维索引器 与 foreach遍历索引器
- C#.NET如何不序列化字段、属性