局部静态变量实现单例模式,线程安全(推荐使用)c++11

class Singleton{
public:
	~Singleton();
	static Singleton& getInstance()
	{
		static Singleton instance;
		return instance;	
	}
private:
	Singleton();
};

原因是C++ 11标准中新增了一个特性叫Magic Static:如果变量在初始化时,并发线程同时进入到static声明语句,并发线程会阻塞等待初始化结束。
这样可以保证在获取静态局部变量的时候一定是初始化过的,所以具有线程安全性,同时也避免了new对象时指令重排序造成对象初始化不完全的现象。并且相比较与使用智能指针以及mutex来保证线程安全和内存安全来说,这样做能够提升效率。
————————————————

相关推荐

  1. 【代码片段】【C++】C++11线安全模式

    2024-03-21 08:14:04       40 阅读
  2. 线安全模式

    2024-03-21 08:14:04       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-21 08:14:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-21 08:14:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-21 08:14:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-21 08:14:04       20 阅读

热门阅读

  1. 饿汉式【单例模式】

    2024-03-21 08:14:04       18 阅读
  2. 力扣每日练习(3.19)补

    2024-03-21 08:14:04       19 阅读
  3. 插件电感的工艺结构原理及选型参数总结

    2024-03-21 08:14:04       21 阅读
  4. React.js入门级教程附带代码详解

    2024-03-21 08:14:04       17 阅读
  5. Spark面试整理-Spark的主要组件是什么?

    2024-03-21 08:14:04       24 阅读
  6. 2024最新华为OD机试试题库全 -【转盘寿司】- C卷

    2024-03-21 08:14:04       20 阅读