设计模式-单例模式

设计模式-单例模式

单例模式

1
int pthread_once(pthread_once_t* once_control, void (*init_routine)(void));

功能是本函数使用初值为 PTHREAD_ONCE_INIT 的 once_control 变量保证 init_routine() 函数在本进程执行序列中仅执行一次。

C++11 一种实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
template<typename T>
class Singlrton : boost::noncopyable {
public:
static T& instance() {
// 只调用一次 init()
pthread_once(&once_, &Singleton::init);
return *value;
}
private:
Singleton();
~Singleton();
static void init() {
value_ = new T();
}
static pthread_once_t once_;
static T* value_;
};

template<typename T>
pthread_once_t Singleton<T>::once_ = PTHREAD_ONCE_INIT;

template<typename T>
T* Singleton<T>::value_ = nullptr;

参考文章:
参考链接

评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...