typeover
curriculum

Curriculum Concurrency

module 6 of 7

Concurrency

Native Go territory — no bilingual crutch. Goroutines, channels, select, and the sync primitives. Concurrency as a language-level feature, not a library bolt-on.


themes

go fn() runs fn concurrently with the caller. That's it. No promises, no async/await, no event loop — the runtime multiplexes goroutines over OS threads. Cheap to start (ki…

9 ready begin →

Channels are typed pipes between goroutines. ch <- v sends, v := <-ch receives. Unbuffered channels are a synchronisation primitive: send blocks until receive completes. Buffer…

9 ready begin →

select waits on multiple channel operations and runs the case for whichever is ready first. With a default branch it becomes non-blocking. Paired with time.After(d) it become…

9 ready begin →

sync.Mutex, sync.RWMutex, sync.WaitGroup, sync.Once. The classical concurrency toolbox. Go's culture prefers channels for orchestration and sync for protecting state. Use…

9 ready begin →