The behavior of concurrent objects is best described through their safety and liveness properties, often referred to as correctness and progress. In this lecture, we examine various ways of specifying correctness and progress.
The Relative Power of Synchronization Operations:
Imagine you are in charge of designing a new multiprocessor. What kinds of atomic instructions should you include? The literature includes a bewildering array of different choices. Supporting them all would be complicated and inefficient, but supporting the wrong ones could make it difficult or even impossible to solve important synchronization problems. Our goal is to identify a set of primitive synchronization operations powerful enough to solve synchronization problems likely to arise in practice.
Linked Lists: Locking, Lock-Free, and Beyond:
This lecture introduces several useful techniques that go beyond locking to allow multiple threads to access a single object at the same time.