執行緒安全的單例模式寫法

2021-10-17 03:22:27 字數 1303 閱讀 4585

關於單例的理論部分已經不再贅述,網上多得是,下面以**為例:

class

cnoncopyable

~cnoncopyable()

private

:// 將拷貝構造和賦值操作符宣告為私有型別

cnoncopyable

(const cnoncopyable&);

const cnoncopyable&

operator=(

const cnoncopyable&);

};

#include

#include

template

<

class

t>

class

csingleton

:private cnoncopyable

static std::unique_ptr s_instance_;

static std::mutex mutex_;};

template

<

class

t>

std::unique_ptr csingleton

::s_instance_;

template

<

class

t>

std::mutex csingleton

::mutex_;

/** @fn t& csingleton::instance()

* @brief 獲取例項的介面

* @param void

* @return t& 物件的引用

*/template

<

class

t>

inline t& csingleton

::instance()

}return

*s_instance_.

get();

}

示例**:

class

ctestmanager

:public csingleton;~

ctestmanager()

;private

:int m_number=10;

public

:int

getnumber()

;};

int num =ctestmanager::

instance()

.getnumber()

;

設計模式 單例模式的寫法(基礎寫法和執行緒安全寫法)

單例模式的寫法非常多。先給出一種最基礎的寫法 a種寫法 package singleton public class singletoninstance public static singletoninstance getinstance return msingletoninstance a寫法...

設計模式 單例模式的寫法(基礎寫法和執行緒安全寫法)

單例模式的寫法很多,先給出一種最基礎的寫法 a種寫法 package singleton public class singletoninstance public static singletoninstance getinstance return msingletoninstance a寫法是...

執行緒安全的單例模式

廢話不多說,常用的 積澱下來。一 懶漢模式 即第一次呼叫該類例項的時候才產生乙個新的該類例項,並在以後僅返回此例項。需要用鎖,來保證其執行緒安全性 原因 多個執行緒可能進入判斷是否已經存在例項的if語句,從而non thread safety.使用double check來保證thread safe...