多线程死锁与优先级反转实战: 从问题复现到工程解决方案

死锁与优先级反转的实战指南。通过 6 个可编译运行的 C++ 示例,复现经典 AB-BA 死锁、回调重入死锁、自死锁、优先级反转等场景,逐一给出工程修复方案(全局锁序、std::scoped_lock、try_lock 回退、PTHREAD_PRIO_INHERIT、无锁架构)。纠正「编译优化导致死锁」的常见误解。附 TSan/lockdep 检测方法。本文为实战篇,与姊妹篇《嵌入式系统死锁防御》形成互补。

February 16, 2026 · 10 min · 2042 words · map[name:DeguiLiu]

C++ 单例模式的线程安全实现: 从 DCLP 的历史缺陷到 C++11 的修复

双重检查锁定 (DCLP) 是 C++ 并发编程中最臭名昭著的模式之一。2004 年 Scott Meyers 和 Andrei Alexandrescu 论证了它在 C++03 中不可移植地安全实现。本文从 DCLP 的历史缺陷出发,解释 C++11 内存模型如何修复它,对比 Magic Statics、acquire/release 原子操作和顺序一致性三种实现,并讨论嵌入式场景下的工程选择。

February 16, 2026 · 7 min · 1361 words · map[name:DeguiLiu]

C/C++ 性能优化实战: 内存布局、分支预测与编译器调优

系统级性能优化不是微调指令,而是在编译器、数据布局、并发架构三个层面做出正确选择。本文从编译器内建函数、编译期多态替代虚函数、零堆分配热路径、缓存友好布局、无锁并发、Active Object 去锁化架构、行为树并行启动、实时调度八个方向,结合 newosp 基础设施库的实际代码,给出可落地的嵌入式 C/C++ 优化实践。

February 16, 2026 · 16 min · 3220 words · map[name:DeguiLiu]

C++14 消息总线的工程优化与性能瓶颈分析

基于 C++14 实现一个带超时管理的线程安全消息总线,解决回调内重入死锁、线程安全订阅管理等工程问题。通过压力测试暴露 mutex + std::function + std::map 方案在多线程高频场景下的性能瓶颈,为后续引入 Lock-free MPSC 方案提供数据支撑。

February 16, 2026 · 7 min · 1326 words · map[name:DeguiLiu]

ARM-Linux 网络性能优化实战: 从中断到零拷贝的全链路调优

面向 ARM-Linux 嵌入式系统的网络性能优化系统指南。从数据包接收全链路出发,覆盖 CPU 频率管理、中断亲和性与分流(RSS/RPS/RFS)、NAPI 轮询、Ring Buffer 调优、协议栈 sysctl 参数、硬件卸载(GRO/TSO/Checksum)、DMA 与零拷贝、Busy Polling 低延迟技术、XDP 快速路径、实时调度(SCHED_FIFO/PREEMPT_RT)等十余个维度的工程实践。每项优化均标注适用场景、ARM 特有注意事项和副作用。

February 16, 2026 · 10 min · 1933 words · map[name:DeguiLiu]

嵌入式 C++ 智能指针的五个陷阱与零堆分配替代方案

std::shared_ptr 和 std::weak_ptr 在桌面开发中是安全的默认选择,但在嵌入式实时系统中会引入原子引用计数开销、堆碎片化、不确定延迟和竞态条件等问题。本文从一个 weak_ptr 竞态 bug 出发,系统分析智能指针在嵌入式场景的五个根本陷阱,并展示 newosp C++17 基础设施库如何用 ObjectPool、FixedFunction、ScopeGuard 和 expected 实现零堆分配的确定性内存管理。

February 16, 2026 · 10 min · 1947 words · map[name:DeguiLiu]

嵌入式 C++17 设计模式实战: 零虚函数、零堆分配的编译期技术

传统设计模式依赖虚函数和动态分配,在嵌入式系统中代价过高。本文基于 newosp 库的真实代码,展示 8 种编译期设计模式的实现:类型擦除替代 std::function、ScopeGuard 替代虚析构、if constexpr 编译期分发、Tag Dispatch 构造控制、强类型包装、Pub/Sub 零堆回调、Visitor 直接分发、以及 CRTP 编译期 Handler 绑定。所有模式在 -fno-exceptions -fno-rtti 下可用,热路径零堆分配。

February 16, 2026 · 9 min · 1796 words · map[name:DeguiLiu]

嵌入式系统中的编译期分发: 用模板消除虚函数开销

结合 MISRA C++ 规范和 newosp 工程实践,系统阐述如何利用 C++17 模板技术实现编译期分发,在保持代码灵活性的同时消除虚函数的性能损耗。实测显示编译期分发相比回调模式有 15 倍性能提升,相比虚函数分发开销降低 95% 以上。

February 16, 2026 · 7 min · 1322 words · map[name:DeguiLiu]

C 语言设计模式实战: 策略模式与状态模式的本质差异

在没有面向对象语法的 C 语言中,策略模式和状态模式都通过函数指针表 (vtable) 模拟多态,代码结构几乎一致。本文从设计意图出发,用通用示例 (传感器滤波、通信协议状态机) 剖析二者的本质差异,并展示它们在同一系统中的协作方式。

February 16, 2026 · 7 min · 1439 words · map[name:DeguiLiu]

C 语言层次状态机框架: 从过程驱动到数据驱动的重构实践

以 state_machine 框架的重构为案例,展示如何将一个过程驱动的 C 语言状态机改造为数据驱动的层次状态机 (HSM)。涵盖转换表替代 switch-case、LCA 算法消除递归、用户缓冲区替代内部分配、守卫条件与内外转换区分等关键改造点,附完整数据结构和 API 设计。

February 16, 2026 · 7 min · 1487 words · map[name:DeguiLiu]

如何设计传感器数据流水线: newosp 事件驱动 + 零堆分配方案

以激光雷达点云处理流水线为主线,展示 newosp C++17 事件驱动架构如何解决工业传感器系统的三大工程难题: 零堆分配消息传递 (CAS 无锁 MPSC + variant 值语义)、可建模的状态管理 (层次状态机 LCA + Guard)、以及微秒级确定性调度。从端到端数据流切入,逐层拆解 AsyncBus、HSM、SPSC 如何协同支撑一条完整的工业数据处理流水线。

February 16, 2026 · 8 min · 1580 words · map[name:DeguiLiu]

MCU 二级 Bootloader 设计: 状态机驱动的 A/B 分区 OTA 与安全启动

在工业 MCU 产品中,固件更新失败意味着设备变砖,安全启动漏洞意味着固件被篡改。本文设计一个裸机环境下的二级 Bootloader,用状态机驱动 A/B 分区 OTA (含 Scratch 分区原子交换的掉电安全方案)、TLV 标准化镜像格式的安全启动验证、以及 ISR + Ring Buffer + 状态机三层解耦的通信协议栈。所有设计面向零 RTOS 依赖的裸机环境。

February 16, 2026 · 12 min · 2347 words · map[name:DeguiLiu]

嵌入式 Telnet 调试 Shell 重构: 纯 POSIX 轻量化实现

在嵌入式 Linux 产品开发中,telnet 调试 shell 是一个常见需求:通过网络连接到设备,执行诊断命令、查看运行状态、修改配置参数。本文为 C++17 header-only 纯 POSIX 实现的过程,最终产物是 telsh 项目。

February 15, 2026 · 2 min · 318 words · map[name:DeguiLiu]

将 RT-Thread MSH 移植到 Linux: 嵌入式调试 Shell 的多后端设计

RT-Thread 的 MSH (Micro Shell) 是嵌入式领域最成功的命令行交互组件之一。本文剖析 MSH 的核心设计理念,讨论在嵌入式 Linux 上实现同等功能的三种方案 (Embedded CLI 移植、newosp shell、自研 embsh),并重点介绍 embsh 如何在一个纯头文件库中融合多后端 I/O、telnet 协议、认证、历史导航和 Tab 补全。

February 15, 2026 · 4 min · 835 words · map[name:DeguiLiu]

轻量级 C++14 日志库设计: 可插拔后端与零依赖架构

在嵌入式 ARM Linux 项目中,基于 Boost.Log 的日志方案因临时对象创建、std::regex 解析和动态链接依赖而成为性能瓶颈。本文以 loghelper 的重构为例,将其改造为 C++14 header-only 架构,支持 spdlog/zlog/fallback 三后端编译期切换,实现 10-100 倍性能提升。

February 15, 2026 · 5 min · 874 words · map[name:DeguiLiu]