1. 什么是单例模式:
旨在确保一个类只有一个实例,并提供全局访问点。
应用场景:需要一个全局唯一的实例,避免资源浪费。
2. 单例模式的实现:
- Lazy Initialization(懒汉式)(延迟初始化):是有在需要时才创建实例,一般是第一次访问时才初始化,为了避免线程安全问题,通常需要加锁;
- Eager Initialization(饿汉式)(立即初始化):在类加载时就创建实例,确保类一开始就有一个唯一实例,不需要考虑线程安全问题,但在类加载时就初始化可能会导致一些性能上的开销;
- 双重检查锁定(Double-Checked Locking):(与第一种模式的加锁模式一样)
注:单例模式的类的构造函数和析构函数一定是private的!!
举例:
第一种方式:(为了保证线程安全,需要对getInstance()方法加锁)
Singleton* Singleton::instance = nullptr;
std::mutex Singleton::mtx;
class Singleton {
private:
static Singleton *instance;
static std::mutex mtx; // 用于加锁
Singleton

最低0.47元/天 解锁文章
8万+

被折叠的 条评论
为什么被折叠?



