并发安全&锁&原子操作&CAS&MESI

“是时候好好理清那些重要的基础概念和系统知识了” ——很久之后,当你从泥泞的业务项目代码中脱身时,总是会这样想到。
本文主要是对阅读过的一些好的博客文章做一个汇总整理(参考博客地址见文章末尾),为了查阅方便,以及防止哪天这些博客的文章意外不见

很长时间以来,对于锁&原子操作这些概念术语总是理解的很模糊,知其然不知所以然。想尽量的理清它们在通常意义上在大家口中所指的含义,以后沟通或者看相关的文章都可以节省一些成本。

基于这些搜罗了一些这方面的博客和文章,加上自己的理解,基于 Golang 对于其中的一些基础概念和关系的总结。

一图胜千言:

参考博客:

Golang 并发编程之同步原语:https://mp.weixin.qq.com/s?__biz=MzUzNTY5MzU2MA==&mid=2247484379&idx=1&sn=1a2abc6f639a34e62f3a5a0fcd774a71&chksm=fa80d24ccdf75b5a70d45168ad9e3a55dd258c1dd57147166a86062ee70d909ff1e5b0ba2bcb&token=183756123&lang=zh_CN#rd

Go之深入理解mutex:http://blog.newbmiao.com/2020/07/01/dig101-golang-understanding-mutex.html

Golang中的CAS原子操作 和 锁:https://blog.haohtml.com/archives/25881

Golang WaitGroup 原理深度剖析:https://www.cyhone.com/articles/golang-waitgroup/

Dig101-Go之聊聊struct的内存对齐:http://blog.newbmiao.com/2020/02/10/dig101-golang-struct-memory-align.html

一文彻底搞懂CAS实现原理 & 深入到CPU指令:https://zhuanlan.zhihu.com/p/94976168

MESI:https://www.scss.tcd.ie/Jeremy.Jones/VivioJS/caches/MESIHelp.htm