C++ 单例模式的线程安全实现: 从 DCLP 的历史缺陷到 C++11 的修复
双重检查锁定 (DCLP) 是 C++ 并发编程中最臭名昭著的模式之一。2004 年 Scott Meyers 和 Andrei Alexandrescu 论证了它在 C++03 中不可移植地安全实现。本文从 DCLP 的历史缺陷出发,解释 C++11 内存模型如何修复它,对比 Magic Statics、acquire/release 原子操作和顺序一致性三种实现,并讨论嵌入式场景下的工程选择。
双重检查锁定 (DCLP) 是 C++ 并发编程中最臭名昭著的模式之一。2004 年 Scott Meyers 和 Andrei Alexandrescu 论证了它在 C++03 中不可移植地安全实现。本文从 DCLP 的历史缺陷出发,解释 C++11 内存模型如何修复它,对比 Magic Statics、acquire/release 原子操作和顺序一致性三种实现,并讨论嵌入式场景下的工程选择。
在嵌入式 ARM Linux 项目中,基于 Boost.Log 的日志方案因临时对象创建、std::regex 解析和动态链接依赖而成为性能瓶颈。本文以 loghelper 的重构为例,将其改造为 C++14 header-only 架构,支持 spdlog/zlog/fallback 三后端编译期切换,实现 10-100 倍性能提升。
消息总线(Message Bus)作为一种重要的通信模式,被应用于解耦系统中的组件,实现异步通信和事件驱动架构。本文介绍如何使用 C++11 实现一个基于 mutex 保护的消息总线。