Concurrency & Async
Waiting is the default state of most software. These deep-dives explain how runtimes keep CPUs busy while I/O is slow — and how to stay correct while doing it.
Threads vs Processes
Memory isolation, context switches, and when each wins.
Async / Await
Pause the function, not the thread. Promises, the event loop, and Go’s goroutine answer.
The Event Loop
Call stack, task queues, microtasks — step through it line by line.
Goroutines & the Go Scheduler
G, M, P, netpoller, work stealing — why Go doesn’t need async/await.
Channels & select
CSP in practice: unbuffered vs buffered, fan-in/out, pipelines.
Races & Deadlocks
Data races vs logical races, the four deadlock conditions, the race detector.
Locks, Mutexes & Atomics
Critical sections, RWMutex, CAS, and lock-free myths.
Worker Pools & Backpressure
Bounded concurrency, queues, load shedding, Little’s Law.
Actors vs CSP
Erlang/Akka mailboxes vs Go channels — two ways to share by communicating.