Memory Models: A Case for Rethinking Parallel Languages and Hardware (2010)
cacm.acm.org
cacm.acm.org
The naming is misleading.
It is talking about memory consistency models, for heaven's sake. If you have a uniprocessor, or any kind of concurrency without parallelism, it makes zero sense to talk about memory consistency models because you automatically have sequential consistency and don't have to think about it.
If you don't have a multiprocessor, you don't need to think about memory consistency models. If you have a multiprocessor without parallelism, that's your problem, not the author's.
EDIT: Though as I think about it I'm having a hard time thinking of a system in which those compiler optimizations are problematic on a uniprocessor system. It is definitely true that optimizations that are safe on a uniprocessor break on a multiprocessor, but I can't think of any systems that don't (effectively) have a memory barrier when switching between threads. SMT wouldn't see a problem because both threads are on the same processor.
To solve what this article argues about though, you can use my internet platform: https://github.com/tinspin/rupy
Java has excellent concurrency and non-blocking implementations.
Since it also has the only class-loader that is worth using, it's the only programming language you can use for server-side joint parallel future proof systems today.