91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
和政县| 宽甸| 闵行区| 三原县| 偏关县| 澎湖县| 乌海市| 故城县| 嵩明县| 德清县| 张家川| 博白县| 齐齐哈尔市| 保康县| 南华县| 同心县| 中阳县| 宜兴市| 弋阳县| 延津县| 原阳县| 三台县| 筠连县| 绥宁县| 永丰县| 泌阳县| 桓台县| 石楼县| 维西| 赤水市| 株洲市| 舞钢市| 文成县| 航空| 安岳县| 朝阳县| 重庆市| 桐庐县| 浏阳市| 武山县| 泗阳县|