1. 程式人生 > >餓漢式單例與懶漢式單例的C#實現

餓漢式單例與懶漢式單例的C#實現

      為了更好地對單例物件的建立進行控制,此處使用了一種被稱之為雙重檢查鎖定(Double-CheckLocking)的雙重判斷機制。在雙重檢查鎖定中,當例項不存在且同時有兩個執行緒呼叫GetInstance()方法時,它們都可以通過第一重“instance==null”判斷,然後由於lock鎖定機制,只有一個執行緒進入lock中執行建立程式碼,另一個執行緒處於排隊等待狀態,必須等待第一個執行緒執行完畢後才可以進入lock鎖定的程式碼,如果此時不進行第二重“instance==null”判斷,第二個執行緒並不知道例項已經建立,將繼續建立新的例項,還是會產生多個單例物件,違背單例模式的設計思想,因此需要進行雙重檢查。