23,121
社区成员
发帖
与我相关
我的任务
分享
/*
#ifndef SINGLETON_H_
#define SINGLETON_H_
#include <pthread.h>
class Singleton {
public:
static Singleton * getInstance() {
if (instance == NULL) {
pthread_once(&once, once_init);
//pthread_mutex_init(&mutex, NULL);
pthread_mutex_lock(&mutex);
if (instance == NULL)
instance = new Singleton();
pthread_mutex_unlock(&mutex);
}
return instance;
}
private:
Singleton() {
}
~Singleton();
Singleton(const Singleton &s);
static void once_init(void) {
pthread_mutex_init(&mutex, NULL);
}
static Singleton *instance;
static pthread_mutex_t mutex;
static pthread_once_t once;
};
pthread_once_t Singleton::once = PTHREAD_ONCE_INIT;
pthread_mutex_t Singleton::mutex;
Singleton *Singleton::instance = NULL;
#endif /* SINGLETON_H_ */