singleton_pattern

news/2025/10/14 21:10:18/文章来源:https://www.cnblogs.com/mankaixin/p/19142023

什么是懒汉单例模式(程序在使用的时候才会构造这个类)
什么是饿汉单例模式(程序启动的时候就构造了这个类)
程序内只存在一个这样的类,不需要重复构造,避免浪费,如读取外部文件,只需一次读取,全局使用。

单例模式代码

//singleton_pattern.h
#pragma once
#include <memory>
#include <mutex>
class Monitor
{
public:static Monitor* getInstance();static Monitor& getInstance2();static void getName();
private:Monitor() = default;Monitor(const Monitor&) = delete;Monitor& operator=(const Monitor&) = delete;                static std::unique_ptr<Monitor> m_instance;static std::mutex m_mutex;
};#include <singleton_pattern.h>
//实例只会被创建一次,多线程下
std::unique_ptr<Monitor> Monitor::m_instance = nullptr;
Monitor* Monitor::getInstance() 
{if (m_instance == nullptr) {                     // 第一次检查(不加锁,提高性能)std::lock_guard<std::mutex> lock(m_mutex);   // 加锁if (m_instance == nullptr) {                 // 第二次检查(加锁保护)m_instance.reset(new Monitor());         // 创建实例}}return m_instance.get(); // 返回原始指针
}
//推荐
Monitor &Monitor::getInstance2()
{static Monitor instance; // Guaranteed to be destroyed.return instance;                      // Instantiated on first use.
}

上述代码保证单例模式可以安全的创建实例,数据的安全需要额外同步操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/937095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20251014周二日记

20251014周二日记今日: 1.上午拿麦当劳去实验室,吃早点开会,写财报。 2.中午不饿没吃,下午上课继续改财报,还要算题。顺便帮忙问问下一届考研的教材问题。 3.晚上和研二师哥师姐一起吃了饭,回实验室学下面的那些…

ai出题

江苏海洋大学考研(340 & 808)思维导图说明:此思维导图以两门自命题大纲为中心,分解为主题 → 子主题 → 关键考点,便于记忆与复习。总览340:鱼类增养殖学 / 鱼类育种学 / 水产动物营养与饲料学(重点:生态养…

Python的Numpy、Pandas和Matplotlib(随笔)

Python--Numpy import numpy as np 1、扩展程序库(维度数组与矩阵运算、针对数组运算提供大量的数学函数库) 2、N维数组对象对象:ndarray(别名array,用于存放同类型元素的多维数组 ,以 0 下标为开始进行集合中元…

财务怎样做到业财融合 - 智慧园区

1. 财务端思维转变 ✅跳出传统账本思维模式:财务人员别只盯着记账、算数据,要多琢磨业务核心逻辑,比如产品提价的原因、项目成本的具体构成。 ✅主动贴近业务全流程:主动参加业务部门的项目会、产品讨论会,把采购…

CF2146E

对于数组 \(a\),定义 \(w(a)\) 为 \(a\) 中满足 \(a_i > mex(a)\) 的下标数。现在给定长度为 \(n\) 的数组,对于每个 \(r\), 求出 \(\max\limits_{l = 1}^{r} w(a[l \sim r])\)。 考虑枚举 \(x = mex(a)\),设 \(…

Gradle使用

Gradle Wrapper distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip networkTimeout=10000 validateDistributionUr…

Spring Boot项目中集成Spring Security OAuth2和Apache Shiro

1. 引入依赖Spring Boot项目中已经包含了Spring Security依赖、Apache Shiro的依赖。 <!-- Spring Security --><dependency> <groupId>org.springframework.boot</groupId> <artifa…

【博客导航】

文章目录 前言 由于文章内容写的比较杂,其实大部分也是写给自己看的,所以博客的内容也有些杂乱,故在此整理一下,以供想要阅读的朋友方便寻找(还有某些没什么参阅价值的文章就不放上来了)。 博客首页博客首页【ST…

部署向量数据库milvus

系统:CentOS 8.9 部署操作如下 # docker load -i etcd-v3.6.5.tar # docker load -i minio-2023-03-20.tar # docker load -i milvus-v2.3.3.tar # docker load -i attu-v2.3.0.tar # cd /app/ # mkdir milvus_de…

从 0 到 1 实现高性能日志库 MiniSpdlog — 这可能是最适合新手的日志系统实战项目 !

嘿,各位C++er们!我是小康 👋 今天我们来聊一个每个开发者都绕不开的话题——日志记录。 你是不是还在用最原始的 cout 和 printf 调试代码?是不是因为线上程序出问题找不到日志而抓狂?别急,今天我就来给大家盘…

思想惰性:警惕时代中的精神惯性

思想惰性:警惕时代中的精神惯性 思想惰性,并非愚钝,而是一种清醒的妥协,一种在舒适区中滋长的意志松弛。它是心智面对复杂时的退缩,是灵魂回避深度思考的惯性。在信息爆炸的当下,这种惰性被技术包装成各类“权威…

完整教程:S7-200 SMART 开放式用户通信(OUC)深度指南:TCP/ISO-on-TCP(上)

完整教程:S7-200 SMART 开放式用户通信(OUC)深度指南:TCP/ISO-on-TCP(上)2025-10-14 20:55 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflo…

journalctl 查看服务日志

1. 使用 journalctl 查看完整日志bash# 查看服务的所有日志(从最早开始) sudo journalctl -u system-monitor# 查看完整日志并实时跟踪新日志 sudo journalctl -u system-monitor -f# 查看最近100行日志 sudo journa…

对ssh修改源码过程

一.下源代码(.src.rpm) 1.centos7 https://mirrors.tuna.tsinghua.edu.cn/ 2.rockylinux https://mirrors.zju.edu.cn/rocky/8.10/BaseOS/source/tree/Packages/o/3.下载命令 curl -O https://mirrors.zju.edu.cn/ro…

低代码时代,企业机遇在哪里

一、当 AI “走进” 低代码:一场温柔的开发革命 要是在 2023 年说 “用说话就能搭系统”,可能还会被当成玩笑;但到 2025 年,这已经成了低代码开发的日常。Gartner 有个预测:未来 70% 的企业应用会靠低代码构建,而…

2025 年浙江专升本培训学校推荐榜:浙江/台州/萧山/温州专升本机构,聚焦学历提升需求,杭州泓涵培训学校为学子护航

随着就业市场竞争加剧、专科生学历提升意识持续增强,专升本已成为众多学子拓宽职业发展路径、实现教育进阶的关键选择。尤其在浙江地区,杭州、台州、萧山、富阳、温州、绍兴等地的专升本报考热度逐年攀升,带动本地专…

25noip20d2t2 马戏表演 - Slayer

noip20d2t2 因为笨 写的详细一点。 题意 给定 n,m,对于长为 n 的排列 a,\(cnt_i=\sum_{1\leq l\leq i\leq r\leq n}[\max_{j=l}^r a_j=a_i]\)。求有多少排列 a 满足所有 \(cnt_i\) 都小于等于 m,答案对质数 p 取模。…

完整教程:port trunk pvid vlan vlan-id 概念及题目

完整教程:port trunk pvid vlan vlan-id 概念及题目pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&quo…

从后端转行为AI工程师,转行AI大模型开发,附全套学习资源!收藏这份指南! - 实践

从后端转行为AI工程师,转行AI大模型开发,附全套学习资源!收藏这份指南! - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fon…

实验一:现代C++初体验

实验一 源代码 #include <iostream> #include <string> #include <vector> #include <algorithm>template<typename T> void output(const T &c);void test1(); void test2(); void…