C++单例模式 (Singleton Pattern)
单例模式 (Singleton Pattern)是软件设计模式中最基础、也是自动驾驶系统中最常用的一种模式。为了让你彻底理解我们还是用生活例子结合代码来拆解。一、 核心概念单例模式的定义确保一个类只有一个实例 (Instance)并提供一个全局访问点来获取它。生活中的例子公司公章只有一枚。谁要盖章都得去找那一枚章。代码中的含义在你的代码里PlanContext就是那个“公章”。错误的做法每次要用数据就new PlanContext()。后果感知模块往“公章A”里写了障碍物规划模块去“公章B”里读数据。结果读了个寂寞车子撞墙。单例的做法全程序禁止new只能通过一个特定的函数比如Instance()拿到那唯一的一个对象。二、 C 代码怎么写这是 C11 之后最标准、最简洁、线程安全的写法被称为Meyers Singleton。请把这段代码刻在脑子里class PlanContext { private: // 1. 构造函数私有化 (Private Constructor) // 意思禁止外部随便 new只有我自己能生我自己。 PlanContext() { std::cout PlanContext 初始化了只会出现一次 std::endl; } public: // 2. 删除拷贝构造和赋值操作 (Delete Copy) // 意思禁止克隆禁止影分身保证独一无二。 PlanContext(const PlanContext) delete; void operator(const PlanContext) delete; // 3. 全局访问点 (Global Access Point) // 意思想要用我调这个函数。 static PlanContext Instance() { // 关键点static 局部变量 // 特性C11 保证了它是线程安全的且只会初始化一次 static PlanContext instance; return instance; } // --- 具体的业务数据 --- void updateData() { ... } }; // 使用方法 int main() { // PlanContext p new PlanContext(); // 报错不让你 new // 正确用法直接找 Instance 要 PlanContext::Instance().updateData(); }三、 为什么PlanContext必须是单例结合你的架构图原因有两个1. 数据一致性 (Data Consistency)你的系统是一个流水线感知 - 写入 - PlanContext - 读取 - 规划如果PlanContext不是单例感知写到了对象 A规划读的是对象 B那规划模块永远拿不到最新的路况。只有大家共用一个对象才能保证**“你写的就是我读的”**。2. 节省资源 (Resource Management)虽然PlanContext可能不大但如果是一些像MapEngine地图引擎这样的类加载一次地图要吃掉 2GB 内存。如果你不小心new了 10 次20GB 内存没了电脑直接死机。单例保证了它只占一份内存。四、 单例模式的“坑”虽然它好用但也不要滥用。它本质上是全局变量 因为谁都能访问它谁都能改它。如果代码里哪个角落偷偷改了数据很难查出来是谁干的。所以我们要加Mutex锁来保护。生命周期难以控制 它通常在程序启动时出生程序结束时销毁。如果你想中途把它销毁释放内存比较麻烦。五、 总结当你看到代码里写着::Instance()或者::getInstance()时脑子里要立刻反应过来这是一个单例。全公司只有这一份。大家都在抢着用它所以里面肯定有锁 (Mutex)。

相关新闻

需求分级:支撑运维商为客户交付业务导向的需求分级方案

需求分级:支撑运维商为客户交付业务导向的需求分级方案

分类传输需求、执行传输资源运行标准、落实系统资源优先级分配 摘要 面向设备集成商、IT外包公司、宽带组网运营商及楼宇企服资源方等技术服务伙伴,我们结合可视化运行监控系统,提供系统规划、标准化交付与平台化运维支撑,助力其为客户实现…

2026/7/5 9:07:29 阅读更多 →
路由策略:助力设备商为客户交付传输资源优先级保障方案

路由策略:助力设备商为客户交付传输资源优先级保障方案

制定传输资源分配标准、管理路由系统访问权限、部署传输资源冗余备份 摘要 面向设备集成商、IT外包公司、宽带组网运营商及楼宇企服资源方等技术服务伙伴,结合可视化运行监控系统,提供系统规划、标准化交付与平台化运维支撑,助力其为客户实…

2026/7/3 17:06:52 阅读更多 →
你的算力被浪费了!警惕GPU热节流这一“隐形杀手”

你的算力被浪费了!警惕GPU热节流这一“隐形杀手”

在人工智能模型训练的宏大叙事中,我们习惯于将焦点集中于算法优化、数据质量与模型架构的创新。然而,在算力密集型的深度学习训练过程中,一个常被忽视的硬件层面因素——GPU热节流,正悄然成为影响训练确定性与模型收敛的潜在变量。…

2026/7/5 7:04:18 阅读更多 →

最新新闻

热红外视觉下的车辆/船舶重识别新方法:Vc-fes

热红外视觉下的车辆/船舶重识别新方法:Vc-fes

在监控与海事安防等场景中,如何在**热红外图像**(灰度、无色彩、纹理弱)中准确识别同一辆车或同一艘船,是一个长期悬而未决的难题。近期发表于《International Journal of Machine Learning and Cybernetics》(2026年)的论文《Vc-fes: viewpoint-conditioned feature selection…

2026/7/5 9:10:34 阅读更多 →
本地AI完全指南①:我把ChatGPT退了,一年省2400——为什么越来越多人把大模型搬回家

本地AI完全指南①:我把ChatGPT退了,一年省2400——为什么越来越多人把大模型搬回家

title: 本地AI完全指南①:我把ChatGPT退了,一年省2400——为什么越来越多人把大模型搬回家? tags: 本地AI,私有大模型,Ollama,DeepSeek,大模型部署,AI隐私,离线AI,本地部署大模型,DeepSeek本地部署 category: 人工智能 本地AI完全指南①&…

2026/7/5 9:10:34 阅读更多 →
同一个模型,三个平台:OpenRouter - SiliconFlow - DeepInfra 实测对比

同一个模型,三个平台:OpenRouter - SiliconFlow - DeepInfra 实测对比

前面几期测的都是模型官方 API。但你实际用的时候,大概率走的不是官方——而是通过某个聚合平台。 为什么?几个现实原因: 不想每个模型绑一张信用卡公司采购要求统一结算官方 API 在某些地区不稳定想用一个 API Key 调所有模型 所以这期我不测…

2026/7/5 9:10:34 阅读更多 →
GRPO训练燃料:把Hermes Agent Feedback变成强化学习信号

GRPO训练燃料:把Hermes Agent Feedback变成强化学习信号

GRPO训练燃料:把Agent Feedback变成强化学习信号 「Hermes Agent自进化智能体深度解析」系列 | 模块十六 第3篇 你的Agent积累了1000条执行轨迹。500条成功,500条失败。成功的路径有的快、有的慢,失败的失败方式各不相同。你盯着这些数据&a…

2026/7/5 9:08:34 阅读更多 →
艾尔登法环mod下载法魂Modv3.0安装指南

艾尔登法环mod下载法魂Modv3.0安装指南

法魂Mod是一款热度突破680万、持续更新超过三年的《艾尔登法环》大型大修模组。3.0版本带来了全新宝珠系统、大量原创武器与法术、DLC区域地图重置等重大更新,并兼容无缝联机与光荣商人等主流功能性模组。以下为完整安装流程与多Mod共存配置方法。 版本核心更新内容…

2026/7/5 9:08:34 阅读更多 →
x64dbg:Windows 逆向分析的开源调试器

x64dbg:Windows 逆向分析的开源调试器

文章目录x64dbg:Windows 逆向分析的开源调试器它能干什么为什么逆向圈都在用1. 填补了工具断层2. 插件生态起来了3. 真正的开源底层技术栈实际体验我的建议x64dbg:Windows 逆向分析的开源调试器 搞逆向工程的人都知道,调试器是吃饭的家伙。I…

2026/7/5 9:06:34 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻