线程安全的单例模式:饿汉模式懒汉模式
目录一、单例模式二、饿汉模式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/7/19 19:19:24 阅读更多 →
Skill-Agent 如何实践:从概念到落地的完整指南

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

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

2026/7/19 19:19:24 阅读更多 →
ESP32 TCP OTA升级方案:局域网稳定传输与AES-256加密实现

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

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

2026/7/20 20:41:40 阅读更多 →

最新新闻

跨平台部署实战:Docker容器化与Serverless架构的选型与落地全流程

跨平台部署实战:Docker容器化与Serverless架构的选型与落地全流程

跨平台部署实战:Docker容器化与Serverless架构的选型与落地全流程 部署架构的三个核心矛盾 独立开发者的部署决策,总是在三个矛盾之间寻找平衡点: 矛盾一:成本与可预测性。 Serverless按请求计费,流量为零时成本为零&a…

2026/7/21 0:30:35 阅读更多 →
C#中的多态——virtual,override与base

C#中的多态——virtual,override与base

为了让同一对象在执行相同行为时有不同表现,我们用到多态这一特性,它能够确保同一对象有唯一的行为特征。例如在利用父类容器装载子类对象时,可以通过多态时不同子类对于同一方法执行不同的逻辑。 最基本的实现多态的方法即为vitrual&#xf…

2026/7/21 0:29:34 阅读更多 →
DeFi + AI 融合趋势:2026 智能 DeFi 协议的技术演进与投资逻辑变化

DeFi + AI 融合趋势:2026 智能 DeFi 协议的技术演进与投资逻辑变化

DeFi AI 融合趋势:2026 智能 DeFi 协议的技术演进与投资逻辑变化 一、融合正在发生,但不在大多数人想象的地方 2026 年上半年,DeFi 与 AI 的融合已经从概念炒作进入工程落地阶段。与 2024-2025 年大量"AI Crypto"叙事代币不同&am…

2026/7/21 0:29:34 阅读更多 →
金融 AI 模型的版本管理与回滚:MLOps 在 Rust 推理基础设施中的工程实践

金融 AI 模型的版本管理与回滚:MLOps 在 Rust 推理基础设施中的工程实践

金融 AI 模型的版本管理与回滚:MLOps 在 Rust 推理基础设施中的工程实践 一、"回滚上一个模型版本" —— 一个看似简单却需要 30 分钟的操作 某量化交易系统上线新版风控模型后,监控显示误拦截率从 0.3% 上升至 2.1%。值班工程师收到告警后执行…

2026/7/21 0:29:34 阅读更多 →
HarmonyOS应用开发实战:小事记 - 图片资源管理:Image 组件的 fillColor/alt 与资源加载策略

HarmonyOS应用开发实战:小事记 - 图片资源管理:Image 组件的 fillColor/alt 与资源加载策略

前言 Image 是 ArkUI 中展示图片的核心组件。HarmonyOS 的图片资源管理支持多种资源引用方式、矢量图变色和加载失败占位。本文以小事记(xiaoshiji_ohos_app) 的 SearchPage.ets 和 EventDetailPage.ets 为分析对象,深入解析 Image 组件的使…

2026/7/21 0:29:34 阅读更多 →
《EA SPORTS FC 26》›解锁世界杯模式 教程

《EA SPORTS FC 26》›解锁世界杯模式 教程

介绍游戏 《EA SPORTS FC™ 26》是由 EA 开发并发行的一款备受瞩目的足球体育模拟游戏。该作于 2025 年 9 月 25 日正式发售,支持 PS4、PS5、Xbox 以及 PC(Steam)等多个平台。游戏以“俱乐部由您主宰”(The Club is Yours&#xf…

2026/7/21 0:28:34 阅读更多 →

日新闻

Octane Render与C4D汉化版安装与优化指南

Octane Render与C4D汉化版安装与优化指南

1. Octane Render与C4D的黄金组合:为什么选择这个方案?在三维创作领域,渲染器的选择往往决定了作品的最终呈现质量和工作效率。作为Cinema 4D(C4D)用户,Octane Render的GPU加速特性与实时预览功能&#xff…

2026/7/21 0:00:19 阅读更多 →
GPMC接口设计:异步/同步模式与多路复用配置实战

GPMC接口设计:异步/同步模式与多路复用配置实战

1. GPMC接口设计:从硬件连接到软件配置的全局视角在嵌入式系统开发中,尤其是基于TI Sitara系列如AM263x这类高性能微控制器的项目里,外部存储器的扩展几乎是绕不开的一环。无论是存放大量非易失性代码的NOR Flash,还是作为高速数据…

2026/7/21 0:00:19 阅读更多 →
UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

1. 项目概述:UE5 GAS RPG被动技能的核心价值在UE5里用GAS(Gameplay Ability System)做RPG游戏,主动技能像是你手里的武器,按一下打一下,逻辑直接,反馈也快。但被动技能,它更像是你身…

2026/7/21 0:00:19 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/20 5:57:49 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/20 4:31:26 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/20 5:56:42 阅读更多 →

月新闻