C# 线程安全的单例模式
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                C# 线程安全的单例模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            namespace API
{/// <summary>/// 業務邏輯API/// </summary>public partial class DesignAPI{private static DesignAPI _instance;private static readonly object _lock = new object();/// <summary>/// 受保護的構造函數,可以通過DesignAPI.Instance使用DesignAPI/// </summary>protected DesignAPI() { }/// <summary>/// DesignAPI實例/// </summary>public static DesignAPI Instance{get{if (_instance == null){// 當需要創建_instance對象時,避免多線程導致的問題;lock (_lock){if (_instance == null){_instance = new DesignAPI();}}}return _instance;}}}
} 
                        
                        
                        添加lock避免多線程時instance被多次new;
1. 在lock外加一層if,是因為當instance不為null時不需要等待鎖,在lock外加一層if可以提高性能;
 2. lock外有一層if之后lock內部的if不可以忽略,因為多線程等待lock之后,需要確認instance是否為null;
內層的if語句塊,在這個語句塊執行之前,先進行了加鎖操作,從而保證只有一個線程能夠訪問該語句塊,也就是保證只創建了一個實例;
 用了兩個if進行判斷的原因還是在于多線程的特性,因為多線程訪問函數時都是獨立訪問的,所以才要用到兩個if;
總結
以上是生活随笔為你收集整理的C# 线程安全的单例模式的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 跨时钟域电路设计——单bit信号
- 下一篇: 跨时钟域电路设计——结绳法
