内存屏障的硬件原理: 从 Store Buffer 到 ARM DMB/DSB/ISB

内存屏障是无锁编程的底层基石,但多数文章停留在 acquire/release 的使用层面,没有解释 为什么 CPU 会重排序。本文从 Store Buffer、Invalidation Queue 和 MESI 协议三个硬件机制出发,推导出四种屏障类型的必然性,区分编译器屏障、硬件屏障和 C++ memory_order 三个层次,最终详解 ARM DMB/DSB/ISB 三条指令的精确语义与适用场景。

February 17, 2026 · 10 min · 1979 words · map[name:DeguiLiu]

SPSC 无锁环形缓冲区设计剖析: 从原理到每一行代码的工程抉择

深度剖析 liudegui/ringbuffer 的 SPSC 无锁环形缓冲区实现。逐项解析缓存行对齐、2 的幂位掩码、wait-free 无重试设计、精确 acquire-release 内存序、FakeTSO 单核模式、批量 memcpy、ProducerClear 所有权修正等 12 项设计决策,每项标注 为什么这样做 和底层硬件原理。

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

无锁编程核心原理: 从 CAS 原子操作到三种队列设计模式

无锁编程的基础性原理文章。从 CAS 原子操作的硬件实现出发,严格定义 lock-free 与 wait-free 的进展保证差异,深入分析 ABA 问题及其解决方案,阐明 acquire-release 内存序的必要性,最终以 SPSC/MPSC/MPMC 三种队列模式为主线,展示无锁数据结构从设计到工程落地的完整知识体系。

February 16, 2026 · 10 min · 2084 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]