亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
江西省| 凤庆县| 容城县| 工布江达县| 当涂县| 布尔津县| 绥芬河市| 新竹市| 淮安市| 临安市| 玉龙| 吐鲁番市| 宿迁市| 清原| 平泉县| 司法| 新晃| 垦利县| 桂平市| 祁门县| 上饶市| 涞源县| 图木舒克市| 云阳县| 大理市| 南和县| 那坡县| 大同市| 南江县| 扎赉特旗| 澎湖县| 泗阳县| 贵定县| 嘉定区| 尚志市| 平果县| 乌鲁木齐市| 辉南县| 竹溪县| 屏南县| 瑞昌市|