1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #include <iostream> #include <mutex>
using namespace std;
class LazySingleton{ private: static LazySingleton* instance; static mutex _lock; int count = 1; LazySingleton() = default; public: ~LazySingleton() = default; static LazySingleton* getInstance(){ if(instance==nullptr){ lock_guard<mutex> locker(_lock); if(instance== nullptr){ instance = new LazySingleton; } } return instance; } void showMessage(){ cout<<count; } };
mutex LazySingleton::_lock; LazySingleton* LazySingleton::instance = nullptr;
int main() { LazySingleton* object = LazySingleton::getInstance(); object->showMessage(); return 0; }
|