Singleton单例模式
来源:互联网 发布:java 日志重定向 编辑:程序博客网 时间:2024/06/06 03:00
#include <iostream>#include <windows.h>#include <mutex>using namespace std;std::mutex _sMutex;template<typename Type>class Singleton{public: static Type* GetSigleton() { if (singlen == NULL) { unique_lock<std::mutex> lock(_sMutex);//C++11的加锁语法。 //unique_lock 的生命周期结束之后,它所管理的锁对象会被解锁, if (singlen == NULL) {#ifndef _WIN32#define _WIN32#endif Type* tmp = new Type(); MemoryBarrier(); //栅栏让此前的代码执行完才执行后面的,防止CPU优化导致多线程代码执行混乱。 singlen = tmp; //如果直接signlen = new Type();//这里审请空间,调用构造, //赋值三步操作可能混乱。 } } return singlen; }private: static Type *singlen;//防止优化,让每次singlen的取值都是在内存中。};template<typename Type>Type * Singleton<Type>::singlen = NULL;class Test{public: void Printf() { cout << "This is Test :: Printf()" << endl; }};int main(){ Singleton<Test> ::GetSigleton()->Printf(); return 0;}
1 0
- 单例(Singleton)模式
- singleton 单例模式
- Singleton单例模式
- Singleton(单例)模式
- Singleton 单例模式
- 单例模式(Singleton)
- 单例模式(Singleton)
- Singleton(单例)模式
- Singleton(单例)模式
- 单例模式(Singleton)
- 单例模式(Singleton)
- 单例模式Singleton
- Singleton (单例模式)
- Singleton单例模式
- 单例模式----SingleTon
- 单例模式-singleton
- 单例模式(Singleton)
- Singleton(单例模式)
- 第011讲 选择器使用细节 块元素和行内元素 盒子模型
- 如何实现一个不规则排列的图片布局算法
- 有哪些实用的计算机相关技能,可以在一天内学会?
- 多线程练习,先用LOCK实现后用synchronized同步实现
- 头
- Singleton单例模式
- String类获取功能
- 升级到Oracle DB 12c之前应该考虑的因素:DB 12c中EM Express 12c的功能减少
- leetcode Edit Distance
- SCU 4439 Vertex Cover (2015四川省省赛D题)
- 2015062201 - 成长
- iframe通信问题及自适应高度
- String类转换功能
- 安装并配置Hadoop伪分布模式