6.2 双重锁定
public class Singleton
{
private static Singleton m_Instance;
static readonly object o = new object();
private Singleton()
{
// 将默认构造函数定义为私有,防止外部调用它实例化别的对象
}
public static Singleton GetInstance()
{
// 这里增加了一个判断实例是否存在,只有在不存在时才给加锁,也就是在这个实例的生命周期中只加过一次锁
if (m_Instance == null)
{
lock (o)
{
if (m_Instance == null)
{
m_Instance = new Singleton();
}
}
}
return m_Instance;
}
}
双重锁定保证了实例在它的生命周期中只被锁定一次,因而它对性能不会有影响。
以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持ASPKU。
注:相关教程知识阅读请移步到c#教程频道。










