Unity3d遊戲開發之-單例設計模式-單例模式二:多執行緒二(雙重鎖定)
單例模式4:
多執行緒二(雙重鎖定)這種雙重鎖定考慮了執行緒安全,是正規寫法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 單例設計模式寫法
{
/// <summary>
/// 單例模式二:多執行緒二(雙重鎖定)這種雙重鎖定考慮了執行緒安全,是正規寫法
/// </summary>
public class Singleton //1:定義一個public的類
{
private static Singleton instance; //2:定義一個私有的靜態變數來保持類的例項
private static readonly object locker = new object(); //3:定義一個標示確保執行緒同步
private Singleton() { } //4:定義一個私有的靜態建構函式,使外界不能建立該類例項
public static Singleton Instance() //5:定義一個public靜態的方法,提供一個全域性訪問點,同時也可以定義共有屬性來提供全域性訪問點
{
if (instance ==null) //6:第一次判斷類的例項是否存在,或者為空
{
//7:當第一個程式執行到這裡時,此時會對locker物件“加鎖”
// ·當第二個執行緒執行該方法時,首先檢測locker物件為“加鎖”狀態,該執行緒就會掛起等待第一個執行緒“解鎖”
// ·lock語句執行完之後(即執行緒執行完之後)會對該物件“解鎖”
// ·雙重鎖定只需要一句判斷就可以了
lock (locker)
{
if (instance==null) //8:第二次判斷類的例項是否存在,或者為空
{
instance = new Singleton(); //9:如果類的例項不存在則建立一個
}
}
}
return instance; //10:如果類的例項存在,直接返回
}
}
}
遊戲常用設計模式之單例設計模式的寫法大概常用的就這麼4種,zero感謝你們的支援。
相關文章
- 設計模式(二)——單例模式設計模式單例
- jS設計模式二:單例模式JS設計模式單例
- JS設計模式(二)--- 單例模式JS設計模式單例
- Java多執行緒程式設計筆記10:單例模式Java執行緒程式設計筆記單例模式
- 重學設計模式-單例模式設計模式單例
- 設計模式開門之單例模式設計模式單例
- 設計模式之單例模式設計模式單例
- 設計模式之☞單例模式設計模式單例
- 設計模式之---單例模式設計模式單例
- synchronized 同步執行緒 單例設計模式+double checkingsynchronized執行緒單例設計模式
- java23種設計模式—— 二、單例模式Java設計模式單例
- 設計模式之單例設計模式設計模式單例
- 設計模式之單例設計模式單例
- Javascript設計模式之單例模式JavaScript設計模式單例
- PHP 設計模式之——單例模式PHP設計模式單例
- golang設計模式之單例模式Golang設計模式單例
- js設計模式之單例模式JS設計模式單例
- Javascript 設計模式之單例模式JavaScript設計模式單例
- PHP 設計模式之單例模式PHP設計模式單例
- PHP設計模式之單例模式PHP設計模式單例
- Android設計模式之單例模式Android設計模式單例
- 01 設計模式之單例模式設計模式單例
- Java設計模式之單例模式Java設計模式單例
- 設計模式(一)之單例模式設計模式單例
- 【設計模式】實現執行緒安全單例模式的五種方式設計模式執行緒單例
- 設計模式(單例模式)設計模式單例
- [設計模式] 單例模式設計模式單例
- 設計模式-單例模式設計模式單例
- 設計模式 —— 單例模式設計模式單例
- 設計模式 單例模式設計模式單例
- 設計模式——單例模式設計模式單例
- 設計模式之單例模式詳解設計模式單例
- 理解設計模式之單例模式(Javascript)設計模式單例JavaScript
- C#設計模式之單例模式C#設計模式單例
- Kotlin 設計模式系列之單例模式Kotlin設計模式單例
- 設計模式學習之單例模式設計模式單例
- 設計模式之單例模式(Singleton Pattern)設計模式單例
- Java設計模式系列之單例設計模式Java設計模式單例
- Unity3D 單例模式Unity3D單例模式