單例模式 餓漢模式與懶漢模式

2021-10-09 01:12:10 字數 1183 閱讀 8276

餓漢模式

餓漢模式是執行緒安全的

class singleton

static singleton* single;

public:

static singleton* gettarget()

};

懶漢模式

懶漢模式是有可能執行緒不安全的

下面展示不安全的寫法

class singleton2

static  singleton2* single;

public:

static singleton2* gettarget()

return single;

} };

為什麼不安全?

//考慮兩個執行緒同時首次呼叫gettarget方法且同時檢測到single是null值

//則兩個執行緒會同時構造乙個例項給single,這是嚴重的錯誤!同時,這也不是單例的唯一實現!

***懶漢模式執行緒安全的寫法1--加鎖

#include #include //加鎖需要的標頭檔案

using namespace std;

class singleton_safe

static singleton_safe* single;

static pthread_mutex_t mutex;

public:

static singleton_safe* gettarget()

pthread_mutex_unlock(&mutex);

}return single;

} };

懶漢模式的執行緒安全的寫法2--內部靜態變數實現

#include #include //加鎖需要的標頭檔案

using namespace std;

class singleton_safe2

static pthread_mutex_t mutex;

public:

static singleton_safe2* gettarget()

};

單例模式(懶漢模式與餓漢模式)

1.單例模式 應用場景 當系統中只需要乙個物件就夠了,如任務管理器 古代皇帝 現代老婆 作用 保證在乙個系統中有且只有乙個例項 型別 餓漢模式 懶漢模式 2.餓漢模式 public class singleton 2.建立類的唯一例項,使用private static關鍵字修飾 private st...

單例模式 懶漢模式與餓漢模式

1 概述 單例模式是23種設計模式之一,也是最常用的設計模式。就是系統執行期間,有且僅有乙個例項。例 package cn.smbms.utils 單例類 author 14062 public class singleton 向外界提供獲取例項的靜態方法 public static singlet...

單例模式(餓漢模式與懶漢模式)

描述 乙個類永遠只有乙個例項 物件 作用 節約記憶體,提高效能。比如 電腦的任務管理器。因為物件越多,佔的記憶體越大,容易造成記憶體溢位。1.餓漢單例模式 物件已經建立好了,要用就直接用 步驟a.定義乙個類,把構造器私有 b.定義乙個靜態變數儲存乙個物件 c.提供乙個靜態返回單例物件方法 class...