很多人以为多线程编程的终极答案是无锁原子操作,但在128核甚至192核的现代CPU面前,原子操作底层的缓存一致性协议(MESI)会变成新的硬件级不卡顿锁。多核争抢同一个缓存行,性能照样雪崩。
Linux内核早就提供了一个破局解法:Restartable Sequences(rseq)。它的底层逻辑非常松弛且聪明——把并发控制从“线程维度”降级到“CPU核心维度”。在用户态给每个CPU分配独立的数据结构,代码执行时直接当成单线程来写,彻底丢掉锁和原子操作。
唯一的漏洞是:万一代码刚写到一半,线程被内核调度换到别的CPU上怎么办?rseq的解法不是让内核“不准中断我”(这在抢占式系统中代价太高),而是跟内核达成了轻量级的共享内存契约:“如果我被中断了,请直接把我踢回这段代码的开头重来。”
这就是一种零抽象成本的、局限于单CPU的用户态微型事务。在百核机器上,这种用汇编实现的十几条指令的小把戏,能让malloc这类基础库的性能直接飙升几十倍。在多核大行其道的AI时代,所有的底层数据结构和系统语言,迟早都要为了这个内核特性重新写一遍。