mutex myMutex; class MySingleton{ public: static MySingleton& getInstance(){ lock_guard myLock(myMutex); if( !instance ) instance= new MySingleton(); return *instance; } private: MySingleton()= default; ~MySingleton()= default; MySingleton(const MySingleton&)= delete; MySingleton& operator=(const MySingleton&)= delete; static MySingleton* instance; }; MySingleton* MySingleton::instance= nullptr;