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
  • Study The Go Programming Language Specification, especially
    • Go statements
    • Channel types
    • Send statements
    • Receive operator
    • Select statements
  • 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

Intermediate

  • Watch Go Concurrency Patterns
  • 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

Advanced

  • Watch Advanced Go Concurrency Patterns
  • Read Go Concurrency Patterns: Context
  • Study The Go Memory Model
  • Study Package atomic
  • Read Principles of Designing Go APIs with Channels
Powered by Gitiles| Privacy| Terms
sourcelogblame