c++多线程单例模式实现
来源:互联网 发布:魔兽世界70数据库 编辑:程序博客网 时间:2024/05/19 09:14
linux环境下多线程中单例模式:利用pthread_once的特性
首先介绍一下pthread_once
int pthread_once(pthread_once_t *once_control, void (*init_routine) (void));
功能:本函数使用初值为PTHREAD_ONCE_INIT的once_control变量,保证init_routine()函数在本进程执行序列中仅执行一次。
#ifndef __SINGLETON__#define __SINGLETON__#include<pthread.h>template<typename T>class Singleton{private:static pthread_once_t ponce;static T* value;public:static T& instance(){pthread_once(&ponce,&Singleton::init);}static void init(){//cout<<"exec init"<<endl;value=new T();}};template<typename T>pthread_once_t Singleton<T>::ponce=PTHREAD_ONCE_INIT;template<typename T>T *Singleton<T>::value=NULL;#endif
测试函数如下
#include<iostream>#include<thread>#include<vector>#include"../Singleton.h"using namespace std;class test{public:test(){cout<<"exec test"<<endl;}};void fun(){Singleton<test>::instance();}int main(){vector<thread> v;for(int i=0;i<5;++i)v.push_back(thread(fun));for(int i=0;i<5;++i)v[i].join();return 0;}
编译以及执行的结果如下:
0 0
- objective c - 单例模式(多线程)
- c语言多线程单例模式
- C++ 实现单例模式 多线程
- 多线程单例模式的安全实现
- 多线程下实现单例模式
- c++多线程单例模式实现
- 设计模式--单例模式 C++实现
- 多线程单例模式
- Objective C 中实现单例模式
- Objective C 实现Singleton(单例)模式.
- Objective-C实现单例模式
- 【Objective-C】单例模式的实现
- objective-C 实现单例模式
- 单例模式代码实现(C++)
- 单例模式 (C语言实现)
- Objective-C实现单例模式
- Objective-C单例模式实现
- Objective-C 单例模式的实现
- 【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰
- div模拟的下拉框
- SRM 553 Div1
- jsp页面转发forward的使用
- 每日一练---计时器
- c++多线程单例模式实现
- React-Native 学习(一)
- hadoop平台下的数据导入导出工具Sqoop
- 【Oracle】函数
- 利用ugui做血条和漂浮文字
- Hive锁与并发模型
- 自己动手写一个Camera
- Android中的内存溢出和内存泄漏问题
- 总结