索尼 PS5 國行版發售,米哈遊《原神》已登陸 PlayStation 5 平臺
阿新 • • 發佈:2021-05-18
實現了一個多執行緒安全的單例模式:
以下的單例模式,如果想要成為一個基礎的基類,可以將private設為protect,將instance型別寫成模版形式,那麼想要實現新的單例,直接繼承此單例模式就好了。
Singleton* Singleton::instance = NULL;
pthread_mutex_t Singleton::mutex = PTHREAD_MUTEX_INITIALIZER;
Singleton* Singleton::GetInstance() {
if(NULL == instance) {
pthread_mutex_lock(&mutex);
instance = new Singleton();
pthread_mutex_unlock(&mutex);
}
return instance;
}
class Singleton {
public:
static Singleton* GetInstance();
void PrintTest() {
printf("hello world\n");
}
private:
Singleton(){};
private:
class CGarbo {
public:
~CGarbo() {
if(NULL != Singleton::instance)
delete Singleton::instance;
pthread_mutex_destroy(&mutex);
}
};
static CGarbo Garbo;
static Singleton* instance ;
static pthread_mutex_t mutex;
};
轉載於:https://my.oschina.net/hejiula/blog/98812