Goroutines are why most people choose Go. This module explains what one actually is, how the runtime runs millions of them on a handful of threads, and how to write concurrent code that is correct — not merely code that happens to pass its tests.
| # | Lesson | The question it answers |
|---|---|---|
| 01 | Goroutines and the Scheduler | What is a goroutine, and who decides when it runs? |
| 02 | Channels | What is a channel made of, and what do send, receive and close really do? |
| 03 | Select, Context and Cancellation | How do I wait on several things and stop work that is no longer wanted? |
| 04 | Sync and Atomics | When do I use a mutex, an atomic or a channel? |
| 05 | The Memory Model and Data Races | What exactly is a data race, and what does Go guarantee? |
| 06 | Concurrency Patterns | How are worker pools, pipelines and bounded concurrency built — without leaks? |
When you finish you can draw the scheduler, predict what any channel operation does, write a cancellable worker pool, and explain why a program with a data race has no defined behaviour.