zoukankan      html  css  js  c++  java
  • c++ 单例模式

    饿汉实现:

    class singleton
    {
    public:
        static singleton*  getInstance();
    private:
        singleton() {}
        static singleton* p;
    class CGarbo { public: ~CGarbo() { if(singleton::p) delete singleton::p; } };   static CGarbo Garbo; //定义一个静态成员,程序结束时,系统会自动调用它的析构函数 };
    singleton
    * singleton::p = new singleton(); singleton* singleton::getInstance() { return p; }

    懒汉实现:

     class singleton
     {
     public:
         static pthread_mutex_t mutex;
         static singleton* getInstance();
     protected:
         singleton()
         {
             pthread_mutex_init(&mutex);
         }
     private:
         static singleton* p;
     };
     
     pthread_mutex_t singleton::mutex;
     singleton* singleton::p = NULL;
     singleton* singleton::getInstance()
     {
         if (p == NULL)
         {
             pthread_mutex_lock(&mutex);
             if (p == NULL)
                 p = new singleton();
             pthread_mutex_unlock(&mutex);
         }
         return p;
     }
    class Singleton
    {
     private:
         Singleton(){}//隐藏构造函数
         Singleton(const Singleton &){}//隐藏拷贝构造函数
         Singleton& operator=(const Singleton &a){}//隐藏赋值操作符
         ~Singleton(){}//隐藏析构函数
     public:
        static Singleton *getInstance()
        {
            lock();//c++11 可以不用加锁
            static Singleton s;
            unlock();
            return &s;
        }
     
    };

    参考: https://www.cnblogs.com/TenosDoIt/p/3639395.html

  • 相关阅读:
    java中JSON转换
    使用Admin监控
    linux安装tomcat
    SpringBoot整合Redis
    linux6.8安装docker
    使用Actuator监控
    SpringBoot集成阿里巴巴Druid监控
    使用Log4j日志处理
    SpringBoot多数据源
    SpringBoot文件上传下载
  • 原文地址:https://www.cnblogs.com/nanqiang/p/7444765.html
Copyright © 2011-2022 走看看