This page links to resources for learning about concurrency in Go. The items are presented in order, from beginner material to advanced topics.
- Read Effective Go: Concurrency
- Watch Rob Pike: Concurrency vs. Parallelism
- Study The Go Programming Language Specification, especially
- Code A Tour of Go: Concurrency
- Read Fundamentals of Concurrency
- Read Mutexes and Semaphores Demystified
- Read the Frequently Asked Questions (FAQ), especially
- Why build concurrency on the ideas of CSP?
- Why goroutines instead of threads?
- Why are map operations not defined to be atomic?
- What operations are atomic? What about mutexes?
- Why doesn't my multi-goroutine program use multiple CPUs?
- Why does using GOMAXPROCS > 1 sometimes make my program slower?
- What happens with closures running as goroutines?
- Study Go by Example from goroutines through stateful goroutines
- Watch Go Concurrency Patterns
- Watch A Practical Guide to Preventing Deadlocks and Leaks in Go
- Read Share Memory By Communicating and do the codewalk
- Read Go Concurrency Patterns: Timing out, moving on
- Watch Concurrency is not Parallelism
- Read Go Concurrency Patterns: Pipelines and Cancellation
- Study Package sync
- Read Introducing the Go Race Detector
- Watch Go: code that grows with grace