zoukankan      html  css  js  c++  java
  • C++单例模式实现再回顾

    单例模式需要注意的问题:

    1、static实例保证只有一个实例

    2、需要C++类外初始化实例、线程锁等

    3、私化构造函数,关闭赋值运算符=和拷贝构造函数

    4、应当有Releas函数

    5、应该考虑线程安全问题

    下面是懒汉模式的实现:

    #include <thread>
    #include <mutex>
    
    class  singleton
    {
    private:
        singleton() = default;
    
    public:
        static singleton * m_instance;
        static std::mutex mu;
    
        static singleton * GetInstance();
        void Print();
        void Release();
    
        singleton & operator=(const singleton & pinstance) = delete;
        singleton(const singleton & pinstance) = delete;
        ~ singleton();
    };
    #include "single.h"
    #include <iostream>
    using namespace std;
    
    singleton* singleton::m_instance=nullptr;
    std::mutex singleton::mu;
    
    void singleton::Print(){
    std::cout<<" It's a singleton"<<std::endl;
    }
    
    singleton* singleton::GetInstance(){
        if (m_instance==nullptr)
        {
            mu.lock();
            if (m_instance==nullptr)
            {
              m_instance=new singleton();
            }
            mu.unlock();
        }
      return m_instance;
    }
    
    void singleton::Release(){
        delete m_instance;
    }
  • 相关阅读:
    python三元表达式
    购物车的升级系统
    python迭代器
    python函数装饰器
    python 闭包函数
    python名称空间与作用域
    python函数的嵌套
    python函数对象
    python函数之可变长参数
    python函数的参数
  • 原文地址:https://www.cnblogs.com/xietianjiao/p/13525029.html
Copyright © 2011-2022 走看看