单例模式(C++)
其他寫法的單例模式就不多說了,主要說下多線程同時執行的情況下的單例模式。
為了多線程執行時的安全性,該單例模式使用了鎖的機制,防止數據一邊在“讀”,一邊在“寫”,導致數據不完整。
在本人做的一個海外的項目時就遇到了這個問題,當時查了很久,熬了2個通宵,最后查到是多線程并發執行時對數據庫中的數據沒有加鎖同步導致的。跑題了,接著下面講述C++中的單例模式的使用。
單例模式只有一個實例,節省了資源,提高了效率,由于單例模式的實例是共享的,因此一定要做好保護,防止數據破壞,使用了double加鎖對數據進行保護的機制,由于對公司的負責,只寫出了關鍵部分的代碼,如下:
class Singleton { private:Singleton() {}static Singleton *instance;public:static Singleton *getInstance(); };Singleton *Singleton::getInstance() {if (NULL == instance){lock();//加鎖if (NULL == instance){instance = new Singleton(); }unlock();//解鎖}return instance; }
總結
- 上一篇: Android MMKV框架引入使用
- 下一篇: C语言 ,嵌入式 ,c++,数据结构 面