#include "thread_pool.h"
#include <iostream>
#include <vector>
#include <thread>
#include <list>
#include <mutex>
using namespace std;
std::once_flag g_flag;//这是系统定义的标记
//单例类
class MyCSA
{
static void CreateInstance()//只被调用一次
{
std::chrono::milliseconds dura(10000);
std::this_thread::sleep_for(dura);
m_instance = new MyCSA();
cout << "执行一次" << endl;
static ReleaseC c2;
}
private:
MyCSA() {};//私有化的构造函数
static MyCSA *m_instance;//静态成员变量
mutex mux;
public:
static MyCSA *getInstance()
{
std::call_once(g_flag, CreateInstance);
cout << "I love China." << endl;
return m_instance;
}
class ReleaseC
{
public:
~ReleaseC()
{
if (MyCSA::m_instance)
{
delete MyCSA::m_instance;
MyCSA::m_instance = nullptr;
}
}
};
};
MyCSA *MyCSA::m_instance = NULL;
void myth()
{
cout << "我的线程开始了" << endl;
MyCSA*p_a = MyCSA::getInstance();
cout << "我的线程结束了" << endl;
return;
}
int main()
{
//一.设计模式大概谈,单例模式
std::thread myobj1(myth);
std::thread myobj2(myth);
myobj1.join();
myobj2.join();
cout << "I love China!" << endl;//
}
C++ 多线程 call_once
最新推荐文章于 2024-08-07 09:55:14 发布