溫馨提示×

C++怎么實現Singleton模式

c++
小億
86
2024-01-19 01:06:04
欄目: 編程語言

在C++中實現Singleton模式可以通過以下幾種方式:

  1. 餓漢式單例模式:在程序啟動時就創建單例對象,并且提供一個全局的訪問點。
class Singleton {
private:
    static Singleton* instance;
    Singleton() {}

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

Singleton* Singleton::instance = new Singleton();
  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. 雙重檢查鎖定單例模式:在第一次訪問時才創建單例對象,并且使用雙重檢查鎖定機制確保線程安全。
#include <mutex>

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;

這些是常見的實現Singleton模式的方式,選擇其中一種方式根據具體需求和線程安全性要求進行選擇。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女