Basically, it goes:
* Original data-race-free model (early 90s)
* Java 5 memory model (~2004-5) [first incorporated into the programming language, as I'm aware]
* C++0x memory model (finalized 2007-2008, IIRC) [added atomics]
* Compilers build their internal intrinsics on top of C++0x, sans consume
* Everyone else adopts either the C++ memory model as is, or without consume
(Sibling comment notes that Java 9 backports the atomics from C++).
Basically, it goes:
* Original data-race-free model (early 90s)
* Java 5 memory model (~2004-5) [first incorporated into the programming language, as I'm aware]
* C++0x memory model (finalized 2007-2008, IIRC) [added atomics]
* Compilers build their internal intrinsics on top of C++0x, sans consume
* Everyone else adopts either the C++ memory model as is, or without consume
(Sibling comment notes that Java 9 backports the atomics from C++).