14.2.6 A Few Simple Rules
@@@
Probably the easiest way to understand memory barriers is to understand
a few simple rules:
- Each CPU sees its own accesses in order.
- If a single shared variable is loaded and stored by multiple
CPUs, then the series of values seen by a given CPU will be
consistent with the series seen by the other CPUs, and there
will be at least one sequence consisting of all values stored
to that variable with which each CPUs series will be
consistent.14.3
- If one CPU does ordered stores to variables A and B,14.4,
and if a second CPU does ordered loads from B and A,14.5,
then if the second CPU's load from B gives the value stored
by the first CPU, then the second CPU's load from A must
give the value stored by the first CPU.
- If one CPU does a load from A ordered before a store to B,
and if a second CPU does a load from B ordered before a store from A,
and if the second CPU's load from B gives the value stored by
the first CPU, then the first CPU's load from A must not
give the value stored by the second CPU.
- If one CPU does a load from A ordered before a store to B,
and if a second CPU does a store to B ordered before a
store to A, and if the first CPU's load from A gives
the value stored by the second CPU, then the first CPU's
store to B must happen after the second CPU's store to B,
hence the value stored by the first CPU persists.14.6
So what exactly @@@
Paul E. McKenney
2011-12-16