线程安全的单例模式:饿汉模式懒汉模式
目录一、单例模式二、饿汉模式1.特点2.实现关键3.代码实现三、懒汉模式1.特点2.实现关键3.代码实现一、单例模式单例模式一种典型的设计模式。应用场景一个类只能实例化一个对象向外提供统一访问接口的场景。作用对资源进行统一管理以及避免数据在不同对象中出现不同的体现。两种实现饿汉模式懒汉模式二、饿汉模式1.特点资源静态化。在程序初始化阶段完成对象的实例化。以空间换时间的思想在使用的时候就可以直接使用。优点在构造对象时不需要考虑线程安全问题。缺点初始化速度慢。2.实现关键1如何在程序初始化阶段完成对象的实例化解决方法在类中定义唯一的对象且用static修饰对象2如何让一个类只能有一个对象解决方法私有化构造函数3.代码实现#includeiostream class Singleton { private: int _data; static Singleton _eton; Singleton () : _data(0) {} public: static Singleton *GetInstance() { return _eton; } int *GetData() { return _data; } }; Singleton Singleton::_eton; int main() { std::cout Singleton::GetInstance() - GetData() std::endl; return 0; }三、懒汉模式1.特点对象在访问使用的时候才去实例化。一种延迟加载的思想用的时候再去加载节省资源。优点初始化速度快。缺点在构造对象时需要考虑线程安全问题。2.实现关键1如何在访问使用的时候采取实例化对象解决方法在类中定义唯一的对象指针且用static修饰2如何让一个类只能有一个对象解决方法私有化构造函数总结1.定义静态对象指针2.构造函数私有化3.加锁保护对象构造过程4.double check提高效率5.volatile关键字修饰防止编译器过度优化。3.代码实现#includeiostream #includemutex class Singleton { private: int _data; /*volatile*/static Singleton *_eton;//c语言实现时需要加上volatile关键字保持_eton内存可见性,防止编译器过度优化 static std::mutex _mutex; Singleton() {} public: static Singleton *GetInstance(){ if (_eton NULL) {//双层检测降低锁冲突概率 _mutex.lock();//加锁确保线程安全 if (_eton NULL) { _eton new Singleton(); } _mutex.unlock(); } return _eton; } int *GetData() { return _data; } }; Singleton* Singleton::_eton NULL; std::mutex Singleton::_mutex; int main() { std::cout Singleton::GetInstance() - GetData() std::endl; return 0; }

相关新闻

AOSP Ubuntu编译环境搭建

AOSP Ubuntu编译环境搭建

一、搭建环境 Liunx系统:Ubuntu18.04 Android系统:12 现在open-vm-tools(推荐open-vm-tools-desktop,能够实现分辨率自适应)可以直接通过apt安装,速度快(只有13M),一键安…

2026/10/18 1:36:23 阅读更多 →
Skill-Agent 如何实践:从概念到落地的完整指南

Skill-Agent 如何实践:从概念到落地的完整指南

引言:为什么需要 Skill-Agent? 在当今快速发展的 AI 应用领域,单一、庞大的通用模型往往难以应对复杂、多变的业务场景。Skill-Agent(技能智能体)架构应运而生,它通过将复杂任务分解为一系列可复用、可编排…

2026/10/17 8:01:28 阅读更多 →
ESP32 TCP OTA升级方案:局域网稳定传输与AES-256加密实现

ESP32 TCP OTA升级方案:局域网稳定传输与AES-256加密实现

这次我们来看一个ESP32的TCP OTA升级方案。对于嵌入式开发者来说,OTA(空中升级)功能是产品化必备的能力,而TCP协议作为最基础的网络通信方式,在局域网环境下的OTA升级具有稳定性高、实现简单的优势。 urbanze开源的es…

2026/10/16 9:45:02 阅读更多 →

最新新闻

2009数模A题血管应力仿真MATLAB工程复现指南

2009数模A题血管应力仿真MATLAB工程复现指南

简介:本资源为2009年全国大学生数学建模竞赛A题参赛论文及配套源码,面向数学建模初学者、备赛学生与高校指导教师,聚焦实际工程问题的建模求解全流程实践。压缩包共9个文件,含5个txt文本(记录数据处理、评价结果、模型…

2026/10/18 2:15:57 阅读更多 →
SteamOS 与 AMD 显卡性能调优:从 amdgpu 到 DXVK 的完整指南

SteamOS 与 AMD 显卡性能调优:从 amdgpu 到 DXVK 的完整指南

最近不少玩家反馈,SteamOS 在 AMD Radeon 显卡上的表现和 Windows 下完全不同。尤其是一些中低端显卡,明明在 Windows 下跑得有些吃力,到了 SteamOS 游戏模式里反而显得更跟手了。文章标题里的 RX 9060 XT 虽然带有“低配”标签,但…

2026/10/18 2:15:57 阅读更多 →
百亿级流量架构实战:CDN+Nginx+Java微服务分层设计

百亿级流量架构实战:CDN+Nginx+Java微服务分层设计

先说结论:如果你正在为一个日请求量接近百亿的系统做架构改造,那么“CDN Nginx 接入层 Java 微服务”这套组合,是目前最稳、最经得起实战考验的落地路径之一。这个方案的核心思路并不复杂——把流量分层消化掉,让每一层只处理自…

2026/10/18 2:15:57 阅读更多 →
PFC 5.0离散元模拟实战:颗粒流代码与岩土三轴仿真教程

PFC 5.0离散元模拟实战:颗粒流代码与岩土三轴仿真教程

简介:这份PFC5.0软件教程压缩包面向地质力学与岩土工程领域的工程师和科研人员,系统讲解PFC离散元分析软件的核心功能。教程重点覆盖力链玫瑰图绘制、二维渗流模拟等典型应用,同时深入解析DPL编程语言,帮助用户掌握自定义加载步、…

2026/10/18 2:15:57 阅读更多 →
图书管理系统课程设计:软件工程文档与VB6+SQL Server实现解析

图书管理系统课程设计:软件工程文档与VB6+SQL Server实现解析

简介:这份资源是面向软件工程课程设计学习者与高校学生的图书管理系统完整开发文档,围绕需求分析、系统设计、数据库设计与系统实现等核心环节展开,适合正在完成课程设计、撰写实验报告或学习结构化开发流程的读者参考。压缩包内共1个doc文档…

2026/10/18 2:15:57 阅读更多 →
从字节序到内存对齐:数据在内存中的真实布局深度拆解

从字节序到内存对齐:数据在内存中的真实布局深度拆解

每个写过几年代码的人,一定都遇到过一个诡异的问题:某个变量在断点里看着是对的,可一传入函数就变了;浮点数比较怎么都对不上;结构体明明只声明了几个字段,内存占用却比想象中多一截。这些问题绝大多数都能…

2026/10/18 2:14:57 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →