gpt4 book ai didi

c# - C# 静态构造函数线程安全吗?

转载 作者:太空狗 更新时间:2023-10-29 23:50:05 27 4
gpt4 key购买 nike

换句话说,这个单例实现线程安全吗:

public class Singleton
{
private static Singleton instance;

private Singleton() { }

static Singleton()
{
instance = new Singleton();
}

public static Singleton Instance
{
get { return instance; }
}
}

最佳答案

在创建类的任何实例或访问任何静态成员之前,保证每个应用程序域只运行一次静态构造函数。 https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/static-constructors

所示的实现对于初始构造是线程安全的,也就是说,构造 Singleton 对象不需要锁定或 null 测试。但是,这并不意味着实例的任何使用都将被同步。有多种方法可以做到这一点;我在下面展示了一个。

public class Singleton
{
private static Singleton instance;
// Added a static mutex for synchronising use of instance.
private static System.Threading.Mutex mutex;
private Singleton() { }
static Singleton()
{
instance = new Singleton();
mutex = new System.Threading.Mutex();
}

public static Singleton Acquire()
{
mutex.WaitOne();
return instance;
}

// Each call to Acquire() requires a call to Release()
public static void Release()
{
mutex.ReleaseMutex();
}
}

关于c# - C# 静态构造函数线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35408121/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com