C# 单例模式,加锁实现多线程安全,给个示例代码
时间: 2024-10-18 18:13:10 浏览: 37
C# 中的单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供全局访问点。为了防止多线程环境下的并发问题,可以采用双重检查锁定(DCL)的方式来实现线程安全的单例。这种方式只有在第一次获取实例时才加锁,提高了效率。
以下是使用双重检查锁定的线程安全单例模式的示例代码:
```csharp
using System;
using System.Threading;
public class Singleton
{
private static volatile Singleton _instance;
private static readonly object padlock = new object();
// 这里构造函数是私有的,保证外部无法直接创建新的实例
private Singleton()
{
// 防止多个线程同时初始化
}
// 获取唯一实例的同步方法
public static Singleton Instance
{
get
{
if (_instance == null)
{
lock (padlock)
{
if (_instance == null)
{
_instance = new Singleton();
}
}
}
return _instance;
}
}
}
// 示例如何使用:
Singleton myInstance = Singleton.Instance; // 只会创建一次
```
阅读全文