C# 单例 线程安全
时间: 2023-11-10 15:01:20 浏览: 94
spring单例引起的线程安全问题
C#中的单例模式可以通过不同的实现方式来实现线程安全。其中,懒汉式单例和饿汉式单例是常用的两种实现方式。
懒汉式单例是指在第一次使用时才创建实例。在多线程环境中,为了保证线程安全,可以使用双重锁定的方式来实现。在懒汉式单例的实现中,通过使用两次判空的方式,可以避免多个线程同时创建实例。具体的实现代码如下:
```csharp
public class Single3
{
private static Single3 _Instance;
private static readonly object _Synchronized = new object();
private Single3() { }
public static Single3 GetInstance()
{
if (_Instance == null)
{
lock (_Synchronized)
{
if (_Instance == null)
{
_Instance = new Single3();
}
}
}
return _Instance;
}
}
```
饿汉式单例是指在类加载时就创建实例。由于在创建实例时就已经初始化,因此在多线程环境下无需额外的线程安全措施。具体的实现代码如下:
```csharp
public class Single
{
private static readonly Single _Instance = new Single();
private Single() { }
public static Single GetInstance()
{
return _Instance;
}
}
```
以上两种方式都可以实现线程安全的单例模式,选择哪种方式取决于具体的需求和场景。
阅读全文