当前位置: 首页 > news >正文

c++ 线程 单例模式

 

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstdlib>
 4 #include <cstring>
 5 #include <mutex>
 6 #include <thread>
 7 using namespace std;
 8 
 9 #define ll long long
10 
11 const int maxn=1e5+10;
12 
13 class Singleton {
14 public:
15     static Singleton* getInstance() {
16         if (instance == nullptr) {
17             lock_guard<mutex> lock(mtx);
18             if (instance == nullptr)
19                 instance = new Singleton();
20         }
21         return instance;
22     }
23 
24     void dosomething() {
25     }
26 
27     static void destoryInstance() {
28         if (instance != nullptr) {
29             delete instance;
30             instance = nullptr;
31         }
32     }
33 private:
34     Sinleton(const Singleton&) = delete;
35     Singleton& operator=(const Singleton&) = delete;
36 
37     static Singleton *instance;
38     static mutex mtx;
39 };
40 
41 void threadFunc(int id)
42 {
43     cout << "thread " + to_string(id) << endl;
44     Singleton *s = Singleton::getInstance();
45     s -> dosomething();
46 }
47 
48 Singleton * Singleton::instance = nullptr;
49 mutex Singleton::mtx;
50 
51 int main()
52 {
53     thread t1(threadFunc, 1);
54     thread t2(threadFunc, 2);
55     thread t3(threadFunc, 3);
56     t1.join();
57     t2.join();
58     t3.join();
59     Singleton::destoryInstance();
60     return 0;
61 }

 

http://www.jsqmd.com/news/1840/

相关文章:

  • 动态规划专题
  • 【51单片机】【protues仿真】基于51单片机PM2.5温湿度测量蓝牙架构
  • 每日反思(2025.9.22)
  • 洛谷题单指南-进阶数论-P4942 小凯的数字
  • 【炼石计划NOIP】第八套 赛后总结
  • 下载了idea
  • vite7-webos网页版os管理|Vue3+Vite7+ArcoDesign搭建pc端os后台系统
  • 三门问题的多种解法,总有一个你看得懂
  • hbase学习——创建springboot+hbase项目
  • python_Day22笔记
  • .NET周刊【9月第1期 2025-09-07】
  • 第七章 Cesium 3D 粒子烟花效果案例解析:从原理到完整代码 - 详解
  • SUDO提权
  • 2025.9.19 总结
  • 详细介绍:无公网 IP 访问群晖 NAS:神卓 N600 的安全解决方案(附其他方法风险对比)
  • 2025.9.18 总结
  • 越南文识别技术:将纸质文档和信息快速、准确地转化为可编辑、可检索的数字数据
  • #JAVA作业
  • C#编程练习:使用队列存储消息,一次性存10条消息,每隔一段时间打印一条消息控制台打印消息时要有明显停顿感 - 详解
  • 23
  • 9.16 总结
  • Halcon抛出异常日志
  • [PaperReading] Mind Search: Mimicking Human Minds Elicits Deep AI Searcher
  • Automatically Naming the Screenshots to Steam
  • 穷举法(c语言版)
  • ZYNQ PS 端 UART 接收数据素材帧(初学者友好版)嵌入式编程 C语言 c++ 软件开发
  • 01 Tasking IDE软件安装及新建工程
  • 详细介绍:深入理解Kafka事务
  • 能碳园区 / 工厂系统 - 智慧园区
  • 代码随想录算法训练营第五天 |242.有效的字母异位词、349. 两个数组的交集、第202题. 快乐数、1. 两数之和