The Go Blog

Concurrency is not parallelism

Andrew Gerrand
16 January 2013

If there’s one thing most people know about Go, is that it is designed for concurrency. No introduction to Go is complete without a demonstration of its goroutines and channels.

But when people hear the word concurrency they often think of parallelism, a related but quite distinct concept. In programming, concurrency is the composition of independently executing processes, while parallelism is the simultaneous execution of (possibly related) computations. Concurrency is about dealing with lots of things at once. Parallelism is about doing lots of things at once.

To clear up this conflation, Rob Pike gave a talk at Heroku’s Waza conference entitled Concurrency is not parallelism, and a video recording of the talk was released a few months ago.

The slides are available at go.dev/talks (use the left and right arrow keys to navigate).

To learn about Go’s concurrency primitives, watch Go concurrency patterns (slides).

Next article: go fmt your code
Previous article: The App Engine SDK and workspaces (GOPATH)
Blog Index