The Relative Power of Synchronization Operations
Wait-Free Implementation
From Weakest Register
All the way to a Wait-free Implementation of Atomic Snapshots
Rationale for wait-freedom
Rationale for wait-freedom
Rationale for wait-freedom
Asynchronous Interrupts
Heterogeneous Processors
Fault-tolerance
Machine Level Instruction Granularity
Basic Questions
Basic Questions
Basic Questions
Basic Questions
Basic Questions
FIFO Queue: Enqueue Method
FIFO Queue: Dequeue Method
Two-Thread Wait-Free Queue
What About Multiple Dequeuers?
Grand Challenge
Grand Challenge
Grand Challenge
Grand Challenge
Grand Challenge
Grand Challenge
Puzzle
Consensus: Each Thread has a Private Input
They Communicate
They Agree on One Thread’s Input
Formally: Consensus
Formally: Consensus
No Wait-Free Implementation of Consensus using Registers
Formally
Formally
Proof Strategy
Protocol Histories as State Transitions
Wait-Free Computation
The Two-Move Tree
Decision Values
Bivalent: Both Possible
Univalent: Single Value Possible
x-valent: x Only Possible Decision
Summary
Summary
Summary
Summary
Claim
Claim
Claim
Claim
What if inputs differ?
Must Decide 0
Must Decide 1
Mixed Initial State Bivalent
Critical States
From a Critical State
Reaching Critical State
Critical States
Critical States
Critical States
Model Dependency
Closing the Deal
Closing the Deal
Closing the Deal
Closing the Deal
Possible Interactions
Possible Interactions
Possible Interactions
Some Thread Reads
Some Thread Reads
Some Thread Reads
Some Thread Reads
Some Thread Reads
Some Thread Reads
Possible Interactions
Writing Distinct Registers
Writing Distinct Registers
Writing Distinct Registers
Writing Distinct Registers
Writing Distinct Registers
Writing Distinct Registers
Writing Distinct Registers
Writing Distinct Registers
Writing Distinct Registers
Possible Interactions
Writing Same Registers
That’s All, Folks!
Recap: Atomic Registers Can’t Do Consensus
What Does Consensus have to do with Concurrent Objects?
Consensus Object
Concurrent Consensus Object
Java Jargon Watch
Generic Consensus Protocol
Generic Consensus Protocol
Generic Consensus Protocol
Generic Consensus Protocol
FIFO Consensus
Protocol: Write Value to Array
Protocol: Take Next Item from Queue
Protocol: Take Next Item from Queue
Consensus Using FIFO Queue
Initialize Queue
Who Won?
Who Won?
Who Won?
Who Won?
Why does this Work?
Theorem
Implications
Corollary
Consensus Numbers
Consensus Numbers
Consensus Numbers Measure Synchronization Power
Synchronization Speed Limit
Earlier Grand Challenge
Multiple Assignment Theorem
Proof Strategy
Proof Strategy
Initially
Thread A wins if
Thread A wins if
Thread A loses if
Summary
Read-Modify-Write Objects
Read-Modify-Write
Read-Modify-Write
Read-Modify-Write
RMW Everywhere!
Example: Read
Example: Read
Example: getAndSet
Example: getAndSet (swap)
getAndIncrement
getAndIncrement
getAndAdd
Example: getAndAdd
compareAndSet
compareAndSet
compareAndSet
compareAndSet
compareAndSet
Read-Modify-Write
Definition
Par Example
Theorem
Reminder
Proof
Proof
Proof
Proof
Proof
Proof
Interfering RMW
Examples
Meanwhile Back at the Critical State
Maybe the Functions Commute
Maybe the Functions Commute
Maybe the Functions Overwrite
Maybe the Functions Overwrite
Impact
compareAndSet
compareAndSet
compareAndSet Has ∞ Consensus Number
compareAndSet Has ∞ Consensus Number
compareAndSet Has ∞ Consensus Number
compareAndSet Has ∞ Consensus Number
The Consensus Hierarchy
Multiple Assignment
Lock-Freedom
Lock-Free vs. Wait-free
Lock-Freedom
Lock-Free Implementations
There is More: Universality