编程知识 cdmana.com

Mise en œuvre du modèle C + + Singleton Thread - SAFE (Linux modulo Network Library)

Mode Singleton

Intention:Une classe ne peut avoir qu'une seule instance,Fournir un point d'accès global

Scénarios applicables:Une classe est souvent créée et détruite,Je veux économiser des ressources.

La clé:Le constructeur est défini commeprivate,Supprimer le constructeur de copie et assigner le constructeur

template<typename T>
class Singleton {
public:
//Retour à l'Instance
	static T& instance() {
//Garantieinit()Une seule fois
		pthread_once(&ponce_, &_single_inheritance::init);
		return *value;
	}
//Supprimer le constructeur de copie et assigner le constructeur
	Singleton(const const Singleton&) = delete;
	Singleton& operator=(const Singleton&) = delete;
private:
	Singleton();
	~Singleton();
	static void init() {
		value_ = new T();
	}
private:
	static pthread_once_t ponce_;
	static T* value_;
};
template<typename T>
pthread_once_t Singleton<T>::ponce_ = PTHREAD_INCE_INIT;

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

版权声明
本文为[Yan Wei, Digital Media Technology, Jiangnan University]所创,转载请带上原文链接,感谢
https://cdmana.com/2022/01/202201080600041719.html

Tags mise en uvre du mod
Scroll to Top