C++ 单例模式及线程安全最佳实现

本文介绍了C++中的单例模式,确保类只有一个实例并提供全局访问点。通过依赖局部静态变量的懒汉模式实现线程安全,利用C++11特性简化代码。同时,文章讨论了在多线程环境下,单例模式对读写操作的线程安全问题。
摘要由CSDN通过智能技术生成

单例模式(Singleton Pattern)的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象

介绍

意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

主要解决:一个全局使用的类频繁地创建与销毁。

何时使用:当您想控制实例数目,节省系统资源的时候。

如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。

关键代码:构造函数是私有的;拷贝构造函数是私有的;局部变量是静态的。

C++11 的极简实现——依赖局部静态变量懒汉模式

实现时要注意多线程安全,即:防止多线程同时进入造成 instance 被多次实例化。

C++ 11 中,局部 static 变量 可以保证多线程安全性。

class Singleton{
   
public:
	// 推荐返回引用
	static Singleton& get_instance() {
   
		static Singleton m_instance;
		return m_instance;
	}
	~Singleton() {
   cout << "DeConstructor" << endl; }	// 私有化析构
private:
	Singleton() {
    cout << "Constructor" << endl; }		// 私有化构造
	Singleton(const Singleton& other);	// 私有化拷贝
	Singleton& 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值