抢占是内存重排序的垃圾回收

Preemption is GC for memory reordering (2019)

5mpweiher💬 0
抢占是内存重排序的垃圾回收

以前我觉得抢占让用户空间的无锁编程更难,但现在我改变主意了。抢占其实就像垃圾回收(GC)一样,是一笔已经付出的沉没成本,既然付了钱,不如善加利用。在 x86 平台上,中断处理具有完全串行化的特性,这意味着任何用户空间指令要么在中断前执行完毕,要么在中断返回后从头重跑。我们可以利用这一特性,在不使用显式屏障的情况下保证内存访问顺序。结合 Bounded TSO 和中断跟踪,我们能在用户空间实现高效的无锁同步原语,比如 event counts 和 hazard pointers。这篇文章将分享我在 Linux/x86[-64] 上如何利用中断作为预付费的屏障,来优化无锁代码的内存排序问题。

"我现在认为,抢占应当被视为一种沉没成本,就像垃圾回收(GC)一样:既然我们已经为此付出了代价,不妨善加利用它。"

同日更多故事 · 2026-07-11