Contents
1.0 IntroductionConcurrent programming is difficult and the effort is rarely rewarded.
2.0 Concurrent Programming Model
Atomic sections do not support interaction with the network or operating system.
3.0 Maintaining Speculative State
Buffering speculative state increases the memory bandwidth requirement of the application.
- 3.1 Speculative State
- 3.2 Immutable Data Structures
- 3.3 Path copying
- 3.4 Binary Trees
- 3.5 Abstract Data Types
- 3.6 Balancing
A concurrent programming model should have intuitive programming semantics.
5.0 Concurrency Control
A scalable concurrent system should implement distributed concurrency control.
6.0 Contention Management
Strong progress guarantees eliminate the need for contention management.
- 6.1 Progress and Contention Management
- 6.2 Non-blocking Algorithms
- 6.3 Producer Consumer Queue
- 6.4 Distribution and Scheduling
Immutable data and distributed concurrency control are co-dependent.