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

singleton_pattern

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

单例模式代码

//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.rkmt.cn/news/21121.html

相关文章:

  • Python的Numpy、Pandas和Matplotlib(随笔)
  • CF2146E
  • 【博客导航】
  • 部署向量数据库milvus
  • 实验一:现代C++初体验
  • 软件工程学习日志2025.10.14
  • CSP-S模拟31 笔记
  • java基础7-字符串
  • 乐云具身活动体验
  • 10.14 闲话:KTT
  • 汽车价格战全面熄火了?不卷价格该卷什么? - 教程
  • 详细介绍:并发编程原理与实战(三十三)AQS框架下手写简易可重入锁的实战解析
  • U-Boot启动探秘:从汇编到命令行的奇幻之旅 - 指南
  • 两数相加-leetcode
  • 线程共享区域
  • 运行时数据区
  • AI4S Cup学习赛 - 超导体临界温度预测
  • Linux之线程池 - 指南
  • 5G x 工业应用:探索德承工控机在5G工业应用中所扮演的关键角色 - 实践
  • 背叛 仇恨 消极 如刀子刺穿了铁心 嘲笑 嗤之以鼻 漠然后只剩下孤寂
  • 【论文复现上新】AAAI2025!北理工团队提出FBRT-YOLO:面向实时航拍图像更快更好的目标检测 |计算机视觉|目标检测
  • 亚马逊因暗黑模式订阅设计支付25亿美元和解金
  • 2025年排烟风机厂家推荐榜:混流风机|管道风机|排烟风机|离心风机|轴流风机|轴流风机厂家,专注高效消防与节能,助力多行业绿色升级
  • 详细介绍:iCloud照片共享:在家庭内外分享iCloud照片
  • 对static新的认识
  • Excel - lookup()
  • 2025 佛山铝合金/系统/断桥铝/耐用/推拉/封阳台/别墅/静音门窗厂家品牌实力推荐:聚焦技术与服务的五大优选标杆
  • 说说新版畅联云的一些重要约定
  • App.vue(完整可运行示例)
  • Avalonia Behaviors 在 StackPanel 空白处无效问题解析与解决方案