Concurrency
Route by Pattern
- •Context cancellation → see context/
- •Goroutine leaks → see goroutines/
- •Channel patterns → see channels/
- •Sync primitives → see sync/
Quick Check
- • Every goroutine has exit path
- • Context passed and checked
- • Channels closed by sender only
- • WaitGroup Add before go
Common Pitfalls
- •Launching goroutines without shutdown mechanism
- •Not propagating context through call chains
- •Closing channels from receiver side
- •Using WaitGroup counter incorrectly
Decision Tree
code
Need coordination? → Use context for cancellation Need data flow? → Use channels Need to wait? → Use sync.WaitGroup Need mutual exclusion? → Use sync.Mutex