单例模式

C++11规定了local static在多线程条件下的初始化行为,要求编译器保证了内部静态变量的线程安全性。在C++11标准下,《Effective C++》提出了一种更优雅的单例模式实现,使用函数内的 local static 对象。这样,只有当第一次访问getInstance()方法时才创建实例。这种方法也被称为Meyers’ Singleton。

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

例子

#include <iostream>class SigleInstance{public:
static SigleInstance& GetInstance(){static SigleInstance instance;return instance;
}
void fun(){std::cout << ++num << std::endl;
}
private:
int num;
SigleInstance():num(0){}
~SigleInstance(){}
};int main(){for(int i = 0; i < 10; ++i){SigleInstance::GetInstance().fun();}return 0;
}
# result
1
2
3
4
5
6
7
8
9
10

C++11线程安全的单例模式相关推荐

  1. 静态内部类、静态变量的加载次数-理解静态内部类实现线程安全的单例模式

    百度众说纷纭的情况下就不如自己写例子测试理论,话不多说,上代码: public class Sta {public static long date=System.currentTimeMillis( ...

  2. 静态内部类、静态变量的加载次数-理解静态内部类实现线程安全的单例模式懒加载

    原贴:https://www.cnblogs.com/suncoolcat/p/3362230.html 写的很详细,需细细品味. 百度众说纷纭的情况下就不如自己写例子测试理论,话不多说,上代码: p ...

  3. C++ 线程安全的单例模式总结丨C++后端开发

    什么是线程安全? 在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况. 如何保证线程安全? 给共享的资源加把锁,保证每 ...

  4. C++ static 变量和线程安全和单例模式

    static变量初始化顺序 1.1 全局变量.文件域的static变量和类的static成员变量在main函数执行之前初始化 1.2 局部静态变量在第一次被使用时初始化 static变量的线程安全 2 ...

  5. Android之线程安全的单例模式,Adapter注意事项之引用传值

    线程安全的单例模式 单位模式一般写法如下: public static FestivalLab mInstance; private FestivalLab() { } public static F ...

  6. c++11 线程:让你的多线程任务更轻松

    英文原文:C++ 11 Threading: Make your (multitasking) life easier 转载:http://www.oschina.net/translate/cplu ...

  7. java 静态内部类 线程安全问题_单例模式的七种写法, 面试题:线程安全的单例模式...

    http://cantellow.iteye.com/blog/838473 http://meizhi.iteye.com/blog/537563 第一种(懒汉,线程不安全): Java代码  pu ...

  8. C++实现线程安全的单例模式

    C++实现线程安全的单例模式 1.单例模式 一个简单的单例模式很容易实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实 ...

  9. 生产者消费者模型、信号量、线程池以及单例模式的实现

    生产者消费者模型!!---对典型的应用场景设计的解决方案 生产者与消费者模型应用场景:有线程不断的生产数据,有线程不断的处理数据. 数据的生产与数据的处理:放在同一个线程中完成,因为执行流只有一个,那 ...

  10. JAVA的多线程、死锁、线程间通信、如何规避死锁、线程安全的单例模式

    主要内容: 多线程 线程和进程间的关系 Java中的线程理论 Java中线程类的实现方式 Java中线程的常用方法 线程安全性问题 线程间通信 线程的死锁 如何规避死锁 线程安全的单例模式 多线程 线 ...

最新文章

  1. or1200乘法除法指令解释
  2. python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)...
  3. python求平方根的代码_python如何求平方根
  4. Spring - Spring Boot Spring Cloud
  5. 匈牙利哦模板 二分匹配 完全匹配问题
  6. 全议程公布丨八大理由让你畅游2021数据技术嘉年华
  7. C++:怎样把一个int转成4个字节?
  8. 如何统计项目代码行数
  9. 工业机器人市场2018年热点回顾与2019年展望
  10. Spyder使用教程
  11. 缓存 redis 缓存失效 分布式锁 Redisson SpringCache
  12. 不是因为寂寞才想你计算机谱子,不是因为寂寞才想你曲谱
  13. iOS开发-极光推送SDK使用笔记
  14. C++多线程启动、暂停、继续与停止
  15. 人称代词I/my/mine/me 用法
  16. Git下载代码--git clone命令
  17. 【原】Java学习笔记025 - 内部类
  18. 【SCOI2012】喵星球上的点名
  19. 安全尽职是企业的阿克琉斯之踵
  20. 桌面图标点不开服务器运行失败,桌面图标打不开的解决技巧

热门文章

  1. 动软代码生成器的使用
  2. 使用EasyExcel读取excel文件案例
  3. 使用花生壳做内网穿透
  4. go-cqhttp + noneBot群聊机器人 配置开发
  5. 基于proteus的一个微程序CPU
  6. Java开源博客系统汇总(持续更新)
  7. python 欧姆龙plc通信_二进制PLC通信校验和
  8. Iconfont-阿里巴巴矢量图标库
  9. 使用vscode作为golang开发环境,无法跳转代码定义
  10. SQLServer 2008安装教程