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

内存屏障是无锁编程的基础,但多数文章停留在 acquire/release 的用法上,没有解释 CPU 为什么重排序。本文从 Store Buffer、Invalidation Queue 和 MESI 三个机制出发,推导四种屏障类型的由来,并详解 ARM DMB/DSB/ISB 三条指令的语义。

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

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

深度剖析 liudegui/ringbuffer 的 SPSC 无锁环形缓冲区实现:缓存行对齐、2 的幂位掩码、wait-free 无重试设计、精确 acquire-release 内存序、FakeTSO 单核模式、批量 memcpy 等 12 项设计决策,每项都对应具体的硬件行为。

February 16, 2026 · 10 min · 1928 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 · 1345 words · map[name:DeguiLiu]