../
// 理解内存顺序
#import "/template.typ":doc-template

#doc-template(
title: "理解内存顺序",
date: "2022年9月7日",
body: [

C++11和C11不约而同地都在新标准中添加了内存顺序相关的内容,这是伴随多核处理器和越来越大的处理器缓存而产生的需求。在多核处理器中,多个核心间虽然共享主内存(这里不考虑NUMA),但是缓存却是互相独立的。如此,现代的CPU变得像是一个分布式系统了。而内存顺序,就是这个分布式系统中的一个非常重要的同步机制。

新标准中的内存顺序包括:

- 获取(Acquire)
- 释放(Release)
- 获取-释放(Acquire-Release,简称acq-rel)
- 顺序一致(Sequentially consistent,简称seq-cst)
- 宽松(Relaxed)

其实还有一个消费内存顺序,但是主流编译器都没有针对它的实现,都是自动当成“获取内存顺序”处理的。所以消费内存顺序可以忽略不计。

首先从acq

...

Email: i (at) mistivia (dot) com