单例
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace CLibrary.ConsoleApp.Core 8 { 9 /// <summary> 10 /// 饿汉模式(推荐使用):在类创建时已经将实例加载到内存,天生线程安全,第一次调用比较快。 11 /// </summary> 12 /// <typeparam name="T"></typeparam> 13 public class Singleton_EHan<T> where T : class, new() 14 { 15 //饿汉式是线程安全的,因为虚拟机保证只会装载一次,在装载类的时候是不会发生并发的。 16 private static readonly T _instance = new T(); 17 public static T Current { get { return _instance; } } 18 } 19 20 /// <summary> 21 /// 懒汉模式:双重锁保证线程安全,第一次调用较慢。 22 /// </summary> 23 /// <typeparam name="T"></typeparam> 24 public class Singleton_LanHan<T> where T : class, new() 25 { 26 private static readonly object sycLock = new object(); 27 //不允许线程进行本地缓存,每个线程的读写都是直接操作在共享内存上,这就保证了变量始终具有一致性。缺点很明显:牺牲了效率, 28 //但是多核CPU情况下线程不安全。 29 private static volatile T _instance; 30 public static T Current 31 { 32 get 33 { 34 if (_instance == null) 35 { 36 lock (sycLock) 37 { 38 if (_instance == null) 39 { 40 _instance = new T(); 41 } 42 } 43 } 44 return _instance; 45 } 46 } 47 } 48 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决