ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

单例模式-简单线程安全的实现方式

2019-07-12 18:37:50  阅读:235  来源: 互联网

标签:const Getinstance void 模式 Single 线程 单例 static tst


/***
 * 为什么说 饿汉式是线程安全的
 * 因为在线程访问之前,单例类就已经创建好自己的实例的引用了 ,并且再一个生命周期中一个类只会被加载化一次
使用场景:
有状态的工具类对象
频繁访问文件或者数据库的类对象
 ****/
#include <iostream>
using namespace std;

class Single
{
	public:
		static Single *Getinstance(void); 
		void sngt_tst(void);

	private:
		static Single m_singt;
		
		//operator = 是为了 防止产生拷贝构造函数
		// 如果直接 用Single:: Getinstance() 就可以省掉下面两句了
		Single(const Single &);
		Single& operator = (const Single &);
		Single(){
			cout<< "creat Single" <<endl;
		}
		~Single(){
			cout << "destroy Single" <<endl;
		}
};
// 使用饿汉式 先创建再使用 空间换时间
Single Single::m_singt;
// 用这个指针类型的防止内存泄漏
Single *Single:: Getinstance()
{
	return &m_singt;
}

void Single :: sngt_tst()
{
	cout<< "single fuctoin call" <<endl;

}

int main()
{
	Single *singt1 = Single :: Getinstance();
	Single *singt2 = Single :: Getinstance();
	singt2->sngt_tst();
	Single:: Getinstance()->sngt_tst();//用这个 可以不用 重载 = 了
}

 

标签:const,Getinstance,void,模式,Single,线程,单例,static,tst
来源: https://blog.csdn.net/yang_quan_yang/article/details/95644195

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有