Singleton.h
#ifndef SINGLETON_H
#define SINGLETON_H
#include <atomic>
#include <mutex>
class Singleton {
public:
static Singleton& GetInstance();
Singleton(const Singleton&) = delete;
Singleton operator=(const Singleton&) = delete;
~Singleton() {}
private:
Singleton() {}
};
#endif
Singleton.cpp
#include "Singleton.h"
static std::mutex g_mtx = {};
Singleton& Singleton::GetInstance()
{
std::unique_lock<std::mutex> lock(g_mtx);
static Singleton singleton;
return singleton;
}