// 理解内存顺序 #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