锁 - 共享数据安全指↑
锁,是并发 & 并行编程下的万能钥匙,也是最容易产生性能瓶颈的源头。在锁的前面有软硬件在协同铺路,在锁的后面还有数据结构和算法在帮忙黄袍加身。
提前说明,本篇涵盖内容非常多,达到 4W 字。可分多餐多时间段食用,每个章节可独立阅读,问题不大。一定不要一口气阅读完,选章节阅读确认对自己有用,再细看不迟。
内存相关的知识非常重要,需要很大篇幅和示例图来阐述。另一篇文章内存分段与分页对 CPU 和内存的数据读取做了详细阐述。在内存分段与分页中文字数超过了 1W,本文的文字数也超过了 4W,均需要多张配图。重要性和难理解程度,都很高。
共享数据安全牵涉到的点很多,从硬件层面的多核心高速缓存、MESI 缓存一致性模型、CPU 乱序执行 & 中断、总线 & 缓存原子锁,到操作系统提供的锁和编译器优化 & 重排,以及高级语言为不同业务场景不断叠加的中间层锁优化,最后还有算法如何进一步保障锁的性能。
大家都知道并发并行场景下共享数据会不安全,本文不是阐述数据不安全会造成的严重影响,而是为什么共享数据会不安全。