Memory model (programming)
A Memory model describes how threads interact through memory, or more generally specify what assumptions the compiler should make when generating code for segmented memory or paged memory platforms.
History and significance
Despite being necessary in order to dictate under which circumstances multiple threads may access the same memory location, few languages have a formal specification of their memory model.
The Java Memory Model was the first attempt to provide a comprehensive memory model for a popular programming language. It was justified by the increasing prevalence of concurrent and parallel systems, and the need to provide tools and technologies with clear semantics for such systems. Since then, the need for a memory model has been more widely accepted, and efforts are underway to provide such semantics for languages like C++0x, the next version of [C++]].