当前位置:   article > 正文

c# 多线程单例模式_线程安全C#单例模式

c# 单例中的属性是否线程安全

我对此处记录的单例模式有一些疑问:http : //msdn.microsoft.com/zh-cn/library/ff650316.aspx

以下代码摘自该文章:

using System;

public sealed class Singleton

{

private static volatile Singleton instance;

private static object syncRoot = new object();

private Singleton() {}

public static Singleton Instance

{

get

{

if (instance == null)

{

lock (syncRoot)

{

if (instance == null)

instance = new Singleton();

}

}

return instance;

}

}

}

具体来说,在上述示例中,是否需要在锁之前和之后两次将实例比较为null?这有必要吗?为什么不先执行锁定并进行比较?

简化为以下内容是否有问题?

public static Singleton Instance

{

get

{

lock (syncRoot)

{

if (instance == null)

instance = new Singleton();

}

return instance;

}

}

执锁昂贵吗?

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/864803
推荐阅读
相关标签
  

闽ICP备14008679号