首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 單例模式基礎實作 (1):Lazy Initialization 與多執行緒風險

     編輯:關於C語言

基本單例 (非執行緒安全)

using System;
public class Singleton
{
    private static Singleton instance;
    private Singleton() { }
    public static Singleton Instance
    {
        get
        {
            if (instance == null) instance = new Singleton();
            return instance;
        }
    }
}

優點

  • 延遲實例化:首次存取 Instance 才建立,避免啟動時不必要建構。
  • 擴充彈性:建構子內可注入子類別實例等進階邏輯。

致命缺點:多執行緒不安全

若多執行緒同時通過 if (instance == null),將建立多個實例,違反單例定義。

解決方案

  1. Double-Check Locking (見第 3 篇)。
  2. 靜態初始化:利用 CLR 類別建構子語意,無需自行寫鎖。
    private static readonly Singleton instance = new Singleton();

靜態初始化最簡潔、效能最佳,應為首選;僅在需極精確控制初始化時機 (如依賴外部設定檔) 才考慮 DCL。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved