程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 單例模式(C++)

單例模式(C++)

編輯:關於C++

單例模式(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;
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved