Skip to content

Concurrency and Parallelism

  • Concurrency vs parallelism: interleaving vs simultaneous execution
  • Synchronisation primitives: mutexes, semaphores, condition variables, monitors
  • Classic problems: producer-consumer, readers-writers, dining philosophers
  • Deadlock: conditions (mutual exclusion, hold-and-wait, no preemption, circular wait), detection, prevention, avoidance (banker's algorithm)
  • Lock-free and wait-free data structures: CAS operations, atomic variables
  • Parallel programming models: shared memory (OpenMP), message passing (MPI)
  • Async and event-driven: event loops, coroutines, async/await
  • Amdahl's law, Gustafson's law, scalability limits