Suggested Readings
Continuations
and Coroutines
- Continuation-based
Multiprocessing
- Representing
Control in the Presence of One-shot Continuations
- Continuations
and Threads: Expressing Machine Concurrency Directly in Advanced
Languages
Threads and Events
- Why
Threads are a Bad Idea (for most purposes)
- Why
Events are a Bad Idea (for high-concurrency servers)
Message-Passing
- Communicating
Sequential Processes
Memory Models
- Shared Memory
Consistency Models: A Tutorial
- Intel 64 Memory Model
- The Java Memory Model
Locking
- Algorithms for
Scalable Synchronization on Shared-Memory Multiprocessors
- Thin Locks:
Featherweight Synchronization for Java
-
Simple, Fast and Practical Non-Blocking and Blocking Concurrent Queue
Algorithms
Data Race and Atomicity Violation Detection
- Eraser: A Dynamic
Data Race Detector for MultiThreaded Programs
- Atomizer: A Dynamic
Atomicity Checker for MultiThreaded Programs
Software Transactions
- Language
Support for Lightweight Transactions
- Transactional
Monitors for Concurrent Objects
- Composable
Memory Transactions