c++ 饿汉式、懒汉式 单例模式

饿汉式

class SingleInstance{
    
    
private:
    SingleInstance(){
    
    }
    static SingleInstance* pInstance;
public:
	static SingleInstance *getInstance(){
    
    
		return pInstance;
	}
};
SingleInstance* SingleInstance::pInstance = new SingleInstance;

懒汉式

class SingleInstance{
    
    
private:
    SingleInstance(){
    
    
        pthread_mutex_init(&mutex);
    }
private:
    static SingleInstance* pInstance;
public:
    static pthread_mutex_t mutex;
    static SingleInstance* getInstance(){
    
    
        if (pInstance == NULL){
    
    
            pthread_mutex_lock(&mutex);
            if (pInstance == NULL)
                pInstance = new SingleInstance();
            pthread_mutex_unlock(&mutex);
        }
        return pInstance;
    }
};
pthread_mutex_t SingleInstance::mutex;
SingleInstance* SingleInstance::pInstance = NULL;

猜你喜欢

转载自blog.csdn.net/wx_assa/article/details/106242461