尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
线程安全的单例模式:饿汉模式懒汉模式
目录一、单例模式二、饿汉模式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; }
RELATED

相关推荐

AOSP Ubuntu编译环境搭建

AOSP Ubuntu编译环境搭建

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

📅 2026/10/5 2:47:56
Skill-Agent 如何实践:从概念到落地的完整指南

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

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

📅 2026/10/9 1:37:32
DuckDB 分析 10GB 日志 CSV:把 pandas 30 分钟查询压到 8 秒,我只做了这三步

DuckDB 分析 10GB 日志 CSV:把 pandas 30 分钟查询压到 8 秒,我只做了这三步

DuckDB 分析 10GB 日志 CSV:把 pandas 30 分钟查询压到 8 秒,我只做了这三步 说实话,我最近被一个 10GB 的 Nginx 访问日志搞得很烦。 业务要做一个“最近 30 天接口访问热度”的临时分析,数据导出来是 10GB 的 CSV。我用 pandas …

📅 2026/10/31 5:39:32
MORE NEWS

更多资讯

📰

广安启航电工证培训在哪考?急需特种作业证才能上岗找工作

广安启航电工证培训在哪考?急需特种作业证才能上岗找工作 现在找工作越来越难,特别是特种作业岗位,没有证连门槛都过不了。电工证、焊工证、高处作业证,这些特种作业证已经是很多行业的硬性要求,尤其是像电力、建筑、制造这些领域,没有证根本无法上岗。…

📰

学低压电工证合格标准与通过率

低压电工证值不值得考?外省证能不能转过来?南阳老电工亲测 之前考的证在外省能不能转过来?这个问题我听了不少人问过,尤其是像你这样在南阳从事中小型施工的电工,跑工地、接项目,流动性大,证件跨省使用是个刚需。今天我就用一个真实的案例,告诉你【学…

📰

成都电工证报名价实操考试心里没底怕挂科?良心建议来了!

成都电工证报名价实操考试心里没底怕挂科?良心建议来了! 实操考试心里没底怕挂科,这事儿我太懂了。我自己刚考完低压电工证,站在考场门口,心跳都能听到。说实话,考试前我也是各种焦虑,怕操作失误、怕被考官说不行。现在回想起来,其实只要提前准备、掌…

📰

呼和浩特哪能考电工证,上岗必备证怎么选才不吃亏

呼和浩特哪能考电工证,上岗必备证怎么选才不吃亏 怕考不过白交培训费?呼和浩特哪能考电工证,这事儿真得提前搞清楚,别到头来花钱又费劲,还拿不到证。特种作业操作证是很多岗位的上岗必备,尤其是电工证,关系到安全操作和职业发展。今天就从报考条件、考…

📰

吉林省电工证怎么考保姆级教程:外省证书怎么转过来

吉林省电工证怎么考保姆级教程:外省证书怎么转过来 之前考的证在外省能不能转过来?这个问题我问过不下十遍,结果发现很多人其实和我一样,拿着外地的电工证,却在吉林省找工作时被卡住了。今天这期 保姆级教程 ,我从零开始告诉你,…

📰

电工证报考推荐机构保姆级教程:证书过期了不知道怎么复审延期怎么办

电工证报考推荐机构保姆级教程:证书过期了不知道怎么复审延期怎么办 证书过期了不知道怎么复审延期,这几乎是每个特种作业人员都遇到过的难题。特别是在安阳,很多从事公路工程的电工,一旦证书没及时复审,不仅影响日常工作,还可能面临停工、罚款甚至被清…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬