餓漢模式
餓漢模式是執行緒安全的
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...