The document discusses the theory of concurrent programming. It begins by defining key terms like process, thread, and shared memory. It then introduces a model of concurrent computation using shared objects and threads. The model assumes threads communicate by performing operations on shared objects like registers and memory. Properties of concurrent programs are discussed, like nondeterminism. Lamport's "happens before" model is introduced to define relations between operations in an execution. Linearizability is defined as a desirable property where concurrent histories can be extended to a legal and serial history. Atomic or linearizable objects are those where all histories satisfy this property.
Related topics: