C++ 单例模式线程安全
// SingleLeton.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <mutex>#include <thread>using namespace std;class Singleton{public:static Singleton*...
·
// SingleLeton.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <mutex>
#include <thread>
using namespace std;
class Singleton
{
public:
static Singleton* getInstance();
void Release();
protected:
Singleton();
~Singleton();
private:
static Singleton* _instance;
static mutex mtx;
int* m_num;
};
Singleton* Singleton::_instance = nullptr;
mutex Singleton::mtx;//保证线程安全
Singleton* Singleton::getInstance()
{
unique_lock<std::mutex> lock(mtx);
if (_instance == nullptr)
{
_instance = new Singleton();
}
return _instance;
}
Singleton::Singleton()
{
cout << "Singleton::Singleton()" << endl;
m_num = new int[10];
for (int i = 0; i < 10; i++)
{
m_num[i] = i;
}
}
Singleton::~Singleton()
{
cout << "Singleton::~Singleton()" << endl;
delete[]m_num;
cout << "delete[]m_num" << endl;
}
void Singleton::Release()
{
if (_instance != nullptr)
{
delete _instance;
_instance = nullptr;
}
}
int main()
{
Singleton* pSingleton = Singleton::getInstance();
pSingleton->Release();
system("pause");
return 0;
}
更多推荐
已为社区贡献1条内容
所有评论(0)