我在这里有这段代码,据说这显然是访问我的单例实例的多线程安全。但是我不明白为什么它被认为是多线程安全的。
private static Singleton uniqueInstance = null;
private static readonly object padlock = new object();
private Singleton()
{
}
public static Singleton GetInstance
{
get
{
lock (padlock)
{
if (uniqueInstance == null)
{
uniqueInstance = new Singleton();
}
}
return uniqueInstance;
}
}
据我了解,线程安全代码意味着可以通过多个线程访问该代码,并且仍然可以正常运行,但是我不明白的是为什么没有锁,代码就不是线程安全的。我一直在阅读有关线程安全性的文章,但仍然对此不太了解。
此外,当多个线程访问此消息时会发生什么,以及这会对性能产生什么样的影响?