中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c++單例模式的實現方法有哪些

c++
小億
84
2024-01-05 01:39:35
欄目: 編程語言

在C++中,有幾種常見的實現單例模式的方法:

  1. 餓漢式單例模式:在程序啟動時就創建單例對象,并提供一個公共的訪問方法。這種方法的缺點是在程序啟動時就創建對象,可能會影響程序的啟動速度。
class Singleton {
private:
    static Singleton* instance;
    Singleton() {}

public:
    static Singleton* getInstance() {
        if (instance == nullptr) {
            instance = new Singleton();
        }
        return instance;
    }
};

Singleton* Singleton::instance = nullptr;
  1. 懶漢式單例模式:在第一次使用時才創建單例對象。這種方法的缺點是需要使用額外的線程同步機制來保證多線程環境下的安全性。
class Singleton {
private:
    static Singleton* instance;
    Singleton() {}

public:
    static Singleton* getInstance() {
        if (instance == nullptr) {
            instance = new Singleton();
        }
        return instance;
    }
};

Singleton* Singleton::instance = nullptr;
  1. 雙重檢查鎖單例模式:在懶漢式單例模式的基礎上加入了雙重檢查,在多線程環境下保證安全性并減少鎖的使用次數。
class Singleton {
private:
    static Singleton* instance;
    static std::mutex mtx;
    Singleton() {}

public:
    static Singleton* getInstance() {
        if (instance == nullptr) {
            std::lock_guard<std::mutex> lock(mtx);
            if (instance == nullptr) {
                instance = new Singleton();
            }
        }
        return instance;
    }
};

Singleton* Singleton::instance = nullptr;
std::mutex Singleton::mtx;
  1. 靜態局部變量單例模式:利用C++的靜態局部變量特性,在需要時創建單例對象,并確保多線程安全。
class Singleton {
private:
    Singleton() {}

public:
    static Singleton* getInstance() {
        static Singleton instance;
        return &instance;
    }
};

0
泰兴市| 玉田县| 定州市| 集安市| 资讯| 黎平县| 广德县| 甘孜县| 肇东市| 临澧县| 福海县| 黑山县| 东山县| 清远市| 毕节市| 文化| 西青区| 武夷山市| 诸暨市| 扶绥县| 湛江市| 象州县| 临朐县| 凤翔县| 海南省| 西华县| 西乌珠穆沁旗| 甘孜县| 德阳市| 夏津县| 辽中县| 若羌县| 新乡市| 黎城县| 淅川县| 左权县| 赤壁市| 屏东市| 瑞安市| 保山市| 木里|