Suggested Readings

Continuations and Coroutines

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