Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign upLearnConcurrency
This page links to resources for learning about concurrency in Go. The items are presented in order, from beginner material to advanced topics.
Beginner
- 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 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?
Intermediate
- 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
- Read Rethinking Classical Concurrency Patterns
- Study Package sync
- Read Introducing the Go Race Detector
- Watch Go: code that grows with grace
- Read Mutexes and Semaphores Demystified
Advanced
Press h to open a hovercard with more details.