1. 程式人生 > 資訊 >迅雷 macOS 版 4.0 正式版釋出:超大 6T 儲存空間,酷炫暗黑面板

迅雷 macOS 版 4.0 正式版釋出:超大 6T 儲存空間,酷炫暗黑面板

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

實現了一個多執行緒安全的單例模式:

以下的單例模式,如果想要成為一個基礎的基類,可以將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