Sharing Time: Concurrency & Multithreading
Debugging production race conditions and deadlocks, and reasoning correctly about shared state. Python examples.
Start reading →01Chapter 1: Concurrency vs. Parallelism, and Why It's Hard02Chapter 2: Processes vs. Threads, Revisited for Concurrency03Chapter 3: The Core Hazards: Race Conditions, Deadlock, Livelock, Starvation04Chapter 4: Synchronization Primitives: Locks, Semaphores, Monitors, Condition Variables05Chapter 5: Designing for Thread Safety: Immutability, Confinement, Thread-Safe Collections06Chapter 6: Classic Patterns: Producer-Consumer, Reader-Writer, Thread Pools07Chapter 7: Higher-Level Models: Async/Await, Event Loops, Coroutines, Actors, Channels08Chapter 8: Memory Models and Visibility: Happens-Before, Volatile, Atomics09Chapter 9: Lock-Free and Wait-Free Programming Basics10Chapter 10: How Concurrency Differs Across Runtimes: JVM Threads, Python's GIL, Go's Goroutines, JavaScript's Event Loop11Chapter 11: Debugging and Testing Concurrent Code12Chapter 12: Classic Interview Problem: Producer-Consumer13Chapter 13: Classic Interview Problem: Dining Philosophers14Chapter 14: Classic Interview Problem: Readers-Writers15Chapter 15: Concurrency in System Design and Production Debugging
Other tracks
Python DSA — CoursePython DSA — Interview PrepPython DSA — BeginnerPython Syntax & DSA ReferenceGit MasteryCognitive Skills & Mental ToolsCode Optimization RulesObjects First: OOP FundamentalsPatterns of Good DesignUnder the Hood: Operating SystemsHow the Bytes Travel: NetworkingData at Rest, Data in Motion: DatabasesClean by Default: Coding StandardsThe Review: Code ReviewFrom Idea to Production: the SDLCDesigning at Scale: System DesignWhiteboard to Blueprint: HLD & LLDBuilt to Last: Reliability & ScalingTell Me About a Time: Behavioral Interviews