C#中的单例模式
来源:互联网 发布:linux 翻到最后一页 编辑:程序博客网 时间:2024/06/05 18:05
、// 单线程应用
public sealed class Singleton { private static readonly Singleton instance = new Singleton(); private Singleton(){} public static Singleton Instance { get { return instance; } } }
//
using System; public sealed class Singleton { private static volatile Singleton instance; private static object syncRoot = new Object(); private Singleton() {} public static Singleton Instance { get { if (instance == null) { lock (syncRoot) { if (instance == null) instance = new Singleton(); } } return instance; } } }此方法确保了仅在需要实例时才会创建仅一个实例。此外,变量被声明为 volatile,以确保只有在实例变量分配完成后才能访问实例变量。最后,此方法使用 syncRoot 实例来进行锁定(而不是锁定类型本身),以避免发生死锁。
此 double-check locking 方法解决了线程并发问题,同时避免在每个 Instance 属性方法的调用中都出现独占锁定。它还允许您将实例化延迟到第一次访问对象时发生。实际上,应用程序很少需要这种类型的实现。大多数情况下,静态初始化方法已经够用。
阅读全文
0 0
- c#中的单例模式
- C#中的单例模式
- C#中的单例模式
- C#中的单例模式
- C#中的线程安全单例模式
- c# 单例模式
- C#单例模式
- C# 单例模式
- C#单例模式
- c#单例模式
- C#单例模式
- C# 单例模式
- C#单例模式
- C#单例模式
- C# 单例模式
- C#单例模式
- C#单例模式
- C# -单例模式
- [翻译]词袋模型入门
- 流水账笔记:PE文件格式(SectionHeaders)
- 流水账笔记:PE文件格式(RVA & FOA)
- phpMyAdmin使用教程
- 算法入门:最少比较次数求最大/最小/第二大元素
- C#中的单例模式
- Python笔记: 通过字典的值得到键
- LeetCode#53暨最大连续子序列和问题
- win10全版本下载地址MSDN纯净版ISO
- Xcode9学习笔记3
- shader和gis是目前的弱项,从osgearth源码入手
- 【笔记篇】Ubuntu一日游
- 068 定积分概念说明
- 如何成为一个很厉害的人?采铜详述13个思维法则