單例模式的兩種執行緒安全並且效率的寫法

2021-07-22 18:47:18 字數 1181 閱讀 6230

#include

#include

#include

#include

using

namespace

std;

mutex mtx;

//懶漢模式

template

class singleton

}return single;

}private:

singleton()

:_data(new t)

{}singleton(const singleton&);

singleton operator=(const singleton&);

static singleton* single;

private:

t _data

};template

singleton::singleton* single = null;

#include

#include

#include

#include

using

namespace

std;

//餓漢模式

singleton::gc gc;

template

class singleton

//或者這樣的實現,外面的staic指標就沒必要了

static singleton getsingleton()

static

void delsingleton()//其實大多數情況下不需要銷毀單例物件,除非單例物件裡有一些資料庫鏈結,檔案描述符等;

//在全域性定義乙個gc類物件;用這樣的方式保證程式結束後釋放單例物件

class gc

};private:

singleton()

:_data(new t)

{}singleton(const singleton&);

singleton operator=(const singleton&);

static singleton* single;

private:

t _data

};template

singleton::singleton* single = new singleton;

兩種單例模式

一。單例模式 有以下的特點 eg。每台計算機可以有若干通訊埠,系統應當集中管理這些通訊埠,以避免乙個通訊埠同時被兩個請求同時呼叫。為了避免不一致狀態 1 單例類只能有乙個例項。2 單例類必須自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。1 懶漢式單例 singleton通過將構造...

單例模式的兩種方式,執行緒安全的懶漢式單例模式

隨手記。單例模式作為23種設計模式種比較經典的,一般都要求能夠手寫 很簡單 下面寫一下兩種實現方式 步驟 1.新建乙個類,提供私有構造器 2.使用構造器宣告當前物件例項成員 3.宣告public static的返回當前類物件的方法 4.要在方法中使用私有物件成員,要將例項成員宣告為static的 p...

單例模式兩種寫法

單例模式 懶漢式單例 package com.b 單例模式 懶漢式單例 類的例項在第一次被訪問時才建立 author zhangli public class singletontest1 private static singletontest1 classinstance null 靜態工廠方法...