设计模式:单例模式

概念:在一个进程中一个类只能实例化出一个对象的设计模式

懒汉式:在你真正用到的时候才去创建这个单例对象

饿汉式:不管你用不用的上,在你创建这个类的时候就直接创建对象

#include<stdio.h>
#include<iostream>
#include<thread>
#include<mutex>
using namespace std;

//饿汉模式
//类在构建的时候直接就直接创建了一个静态对象共操作系统使用
//线程不安全
class sign
{
  //将构造函数设为私有
  sign()
  {}

  public:
  static sign* getsigna()
  {
    //创建一个对象
    static sign a;
    return &a;
  }

};


//懒汉模式
//线程不安全
//可重入
class SignLeton
{
  static SignLeton *signleton;
  
  SignLeton()
  {}

  public:

  static SignLeton *GetSignLeton()
  {
    if(signleton == NULL)
    {
      signleton = new SignLeton();
    }
    return signleton;
  }
};


//线程安全
template <class T>
class SignLeton2
{
  volatile static T* inst;
  //线程锁
  static std::mutex lock;

  public:
  static T *getsignlemon()
  {
    //双重判定NULL指针
    //降低锁冲突
    if(inst == NULL)
    {
      lock.lock();
      //加锁线程安全
      if(inst == NULL)
      {
        inst = new SignLeton2();
      }
      lock.unlock();
    }
    return inst;
  }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值