08 — Resources¶
The primary sources¶
Everything in this library can be checked against these. Where a page says what Go promises, it links one of them.
- The Go Programming Language Specification ↗ — Go statements, Channel types, Send statements, Select statements, Program execution.
- The Go Memory Model ↗ — what one goroutine may assume about another's writes, and which operations synchronize.
- Packages:
sync↗,sync/atomic↗,context↗,testing/synctest↗. - Data Race Detector ↗ — how
-raceworks, what it costs, and its exit status. - Effective Go: Concurrency ↗ and the Go blog's Share Memory By Communicating ↗ — the idiom behind chapters 02 and 06.
- Go Concurrency Patterns: Pipelines and cancellation ↗ — the source of chapter 06's first lessons.
- Testing concurrent code with testing/synctest ↗ and the Go 1.25 release notes ↗ —
synctestandWaitGroup.Go.
Books¶
On the shelf beside this library, and cited by chapter in the lessons:
- Concurrency in Go: Tools and Techniques for Developers — Katherine Cox-Buday (O'Reilly, 2017).
- Learn Concurrent Programming with Go — James Cutajar (Manning, 2024).
- Effective Concurrency in Go — Burak Serdar (Packt, 2023).
- Learning Go: An Idiomatic Approach to Real-World Go Programming, 2nd edition — Jon Bodner (O'Reilly, 2024).
The Concurrency library keeps a longer list of concurrency books for every language, with their chapters: books ↗.
The same ideas in other languages¶
Each Go lesson's In other languages section links its counterparts. The Concurrency library's concept map ↗ goes the other way: a page per idea — goroutine, channel, select, mutex, cancellation, pipeline, race detector — with the construct in each language, and a link back to the lesson here.