2017-06-06
以前面试的时候让写一个单例模式的类对象,怎么看都不明白,怎么学都不明白。只好死记硬背一些单例的例子。今天突然发现,他妈的在前面加一个static 就是最简单的单例了。对之前的智商感到担忧 。
下面我来说一下最简单的单例:
#include "标头1.h" Configer::Configer(){ opention A; } const Configer & Configer::getConfig(){ static Configer Conf; return Conf; } Configer::~Configer(){ }
class Configer{ public: Configer(); static Configer & getConfig(); ~Congiger(); };
以上是领悟到的单例模式,尽管不是安全的,网上查了一下:这种和叫饿汉式单例的差不多,就是缺少线程安全锁。
想要产生单例对象时直接调用getConfig()方法就得到了。
如果想要线程安全的单例。则在产生类对象的前后加锁即可:
const Configer & Configer::getConfig(){ pthread_mutex_lock(&mutex); static Configer Conf; pthread_mutex_unlock(&mutex); return Conf; }