Concurrency and memory models: Programming Language Design course | Zoonk
38. Concurrency and memory models
Specify threads, atomics, synchronization, visibility, reordering, and data races. Write a language-level memory model that both programmers and optimizing compilers can follow.