Muduo库源码分析(8):单例模式实现
来源:互联网 发布:ci框架打印sql语句 编辑:程序博客网 时间:2024/06/09 07:25
- 单例模式
保证一个类只有一个实例,并提供一个访问它的全局访问点 - 参考资料
C++设计模式——单例模式: http://www.jellythink.com/archives/82 - Muduo库实现单例模式的思想:
通过pthread_once在多个线程中只会初始化一次的特性实现的线程安全的单例模式
template<typename T>class Singleton : noncopyable{ public: static T& instance() { //ponce_=PTHREAD_ONCE_INIT;所以该函数只会初始化一次init函数,哪个线程实现初始化取决于哪个线程先抢占CPU的执行权 pthread_once(&ponce_, &Singleton::init); assert(value_ != NULL); return *value_; } private: Singleton(); ~Singleton(); static void init() { value_ = new T(); if (!detail::has_no_destroy<T>::value) { ::atexit(destroy); } } static void destroy() { typedef char T_must_be_complete_type[sizeof(T) == 0 ? -1 : 1]; T_must_be_complete_type dummy; (void) dummy; delete value_; value_ = NULL; } private: static pthread_once_t ponce_;// 条件变量 static T* value_;// 单例对象};template<typename T>pthread_once_t Singleton<T>::ponce_ = PTHREAD_ONCE_INIT;template<typename T>T* Singleton<T>::value_ = NULL;}
阅读全文
0 0
- Muduo库源码分析(8):单例模式实现
- muduo库源码解析:单例模式singleton
- 【muduo】单例模式
- muduo库源码分析
- muduo源码分析--Reactor模式的在muduo中的使用(二)
- muduo源码分析--Reactor模式在muduo中的使用
- muduo源码分析之实现TCP网络库(连接的接收和关闭)
- muduo源码分析--EventLoop 类的实现
- muduo源码分析--线程池的实现
- muduo库阅读(8)——单件模式的线程局部存储
- muduo:Singleton类,单例模式
- muduo网络库之net库源码分析(1)
- muduo库源码分析(3):异常类
- muduo库源码分析(4):线程类
- Muduo库源码分析(5):互斥锁,条件变量类
- Muduo库源码分析(7):线程池
- Muduo库源码分析(9):线程特定数据
- 自学SSH框架之---struts(三):源码分析struts1如何实现Action单例模式
- 浏览器实现PDF预览
- Java自定义注解代码实现与扩展
- CSU 1325 A very hard problem (莫比乌斯反演)
- 40个Java多线程问题总结
- (11)按年龄对每行数据进行排序
- Muduo库源码分析(8):单例模式实现
- Java基础学习
- uva 11059 Maximum Product
- Hibernate基础知识
- 《VM学习》-01-VM安装失败 “Failed to create the requested registry key Key:installer Error:1021"
- 存储过程
- TCP/IP学习笔记(12)——DNS:域名系统
- 二叉树重建(前中序遍历求后序模板刘汝佳小白本)
- C