单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点以访问该实例。
在C++中,可以通过将类的构造函数和复制构造函数设置为私有,以及提供一个静态的实例方法和静态变量来实现单例模式。在实现单例模式时,需要注意多线程下的并发问题,可以使用线程安全的锁机制来解决这个问题。
以下是一个简单的单例模式的示例代码:
class Singleton {
private:
static Singleton *instance;
static std::mutex mtx;
Singleton() {}
public:
static Singleton* getInstance();
Singleton(Singleton const&) = delete;
void operator=(Singleton const&) = delete;
};
Singleton* Singleton::instance = nullptr;
std::mutex Singleton::mtx;
Singleton* Singleton::getInstance() {
mtx.lock(); // 加锁
if (instance == nullptr) {
instance = new Singleton();
}
mtx.unlock(); // 解锁
return instance;
}
在这个示例代码中,设置了一个私有构造函数,静态变量instance以及getInstance方法用于获取Singleton类的唯一实例。同时使用了线程安全的mutex锁来避免多线程下的并发问题。