头文件:

#include "singleton.h"

#include <mutex>
#include<iostream>

std::shared_ptr<Singleton> Singleton::s_instance;
Singleton *Singleton::getInstance()
{
static std::mutex s_mutex;
if (s_instance.get() == NULL)
{
s_mutex.lock();
if (s_instance.get() == NULL)
{
s_instance.reset(new Singleton());
}
s_mutex.unlock();
}
return s_instance.get();
}

Singleton::Singleton()
{

}

源文件:

#include "singleton.h"

#include <mutex>
#include<iostream>

std::shared_ptr<Singleton> Singleton::s_instance;
Singleton *Singleton::getInstance()
{
static std::mutex s_mutex;
if (s_instance.get() == NULL)
{
s_mutex.lock();
if (s_instance.get() == NULL)
{
s_instance.reset(new Singleton());
}
s_mutex.unlock();
}
return s_instance.get();
}

Singleton::Singleton()
{

}