一种多线程安全的单例模式
来源:互联网 发布:自助牛排知乎 编辑:程序博客网 时间:2024/05/23 00:10
template <typename T>class StaticSingletonT {public:static T* SafeInstance() { static T* s_instance_ptr = NULL; if (!s_instance_ptr) { if (atomic_compare_exchange(&s_state, OBJECT_CREATING, OBJECT_NOT_CREATE) == OBJECT_NOT_CREATE) { s_instance_ptr = StaticSingletonT<T>::GetInstance(); s_state = OBJECT_CREATED; } else { while (s_state != OBJECT_CREATED) usleep(1); s_instance_ptr = StaticSingletonT<T>::GetInstance(); } } return s_instance_ptr;}private: static T* GetInstance() { static T s_instance; return &s_instance; }private: enum OBJECT_STATE { OBJECT_NOT_CREATE = 0, // Not created OBJECT_CREATING = 1, // Creating OBJECT_CREATED = 2 // Has been created }; static volatile uint32_t s_state;};template<class T> volatile uint32_t StaticSingletonT<T>::s_state = OBJECT_NOT_CREATE;
ps:atomic_compare_exchange换成对应平台支持的API
0 0
- 一种多线程安全的单例模式
- 多线程单例模式的安全实现
- 单例模式的多线程安全
- 一种线程安全的单例模式(10.4.1更新)
- 转 一种线程安全的单例模式
- 一种线程安全的单例模式实现
- 单例模式--一种线程安全的写法
- C++实现多线程安全的单例模式
- C++实现多线程安全的单例模式
- C++实现多线程安全的单例模式 已测试
- 【Java多线程】之八:单例模式的线程安全
- 单例模式的多线程安全支持(C++)
- 单例的多线程安全
- 单例模式和多线程安全
- 单例模式和多线程安全
- 多线程安全(二)之单例模式
- 多线程__【线程安全】【线程同步】【单例模式的线程安全】【线程死锁】
- 单例模式的一种实现方法
- stm8编译器的安装,及一些问题;
- Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
- 输入一个字符串,字符串中含有字母、逗号、空格,实现将输入字符中的逗号,空格号去除,字母分行显示
- 《深入剖析Tomcat 》第3章 连接器(Connector)
- C++经典问题解析
- 一种多线程安全的单例模式
- LeetCode Happy Number 题解
- xpath
- 中央处理器-第三节 时序产生器和控制方式
- 基于sankey图制作的社区变动图
- SimpleDateFormat转换时间,12,24时间格式
- Winform 换皮肤
- 游戏开发
- 《实体解析与信息质量》-2.1.3 两个信息产品的例子