我是 Linux 内核编程的新手。我对GUARANTEES章节中的内存障碍文档感到困惑。
特定 CPU 中的重叠加载和存储似乎在该 CPU 中是有序的。
*X = c; d = *X;
CPU只会发出:
STORE *X = c, d = LOAD *X
然后是另一个例子:
必须假设可以合并或丢弃重叠的内存访问。
*A = X; Y = *A;
我们可能会得到:
STORE *A = X; Y = LOAD *A; STORE *A = Y = X;
它们看起来一样,这两个例子有什么区别?