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?這有必要嗎?為什么不先執(zhí)行鎖定并進行比較?
簡化為以下內容是否有問題?
public static Singleton Instance
{
get
{
lock (syncRoot)
{
if (instance == null)
instance = new Singleton();
}
return instance;
}
}
執(zhí)鎖昂貴嗎?
總結
以上是生活随笔為你收集整理的c# 多线程单例模式_线程安全C#单例模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python web开发——自定义use
- 下一篇: windows系统突然提示winload