// ----------------------|----------------------|
// 线程 A | 线程 B |
// | |
// |---------| | |---------| |
// | 控制器 | | | 控制器 | |
// |---------| | |---------| |
// | 运算器 | | | 运算器 | |
// |---------| | |---------| |
// | L1 Cache| | | L1 Cache| |
// |---------| | |---------| |
// ---------------------------------------------|
// L2 Cache |
// ---------------------------------------------|
// 主内存 |
// |---------| |---------| |
// | 共享变量1| | 共享变量2 | |
// |---------| |---------| |
// ---------------------------------------------|
假如线程 A 和线程 B 同时处理一个共享变量,使用图所示 CPU 架构,
假设线程 A 和线程 B 使用不同 CPU 执行,并且当前两级 Cache 都为空, 那么这时候由于 Cache 的存在,将会导致内存不可见问题, 具体看下面的分析。
原文:https://www.cnblogs.com/fly-book/p/11367672.html