blob: 953a328e5984325c4004ad095b0c9a6df59ee306 [file] [log] [blame] [view]
---
title: Concurrency is not parallelism
date: 2013-01-16
by:
- Andrew Gerrand
tags:
- concurrency
- talk
- video
summary: Watch Rob Pike's talk, _Concurrency is not parallelism._
---
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](http://heroku.com/)'s
Waza conference entitled
[_Concurrency is not parallelism_](https://blog.heroku.com/concurrency_is_not_parallelism),
and a video recording of the talk was released a few months ago.
{{video "https://www.youtube.com/embed/oV9rvDllKEg" 500 281}}
The slides are available at [go.dev/talks](/talks/2012/waza.slide)
(use the left and right arrow keys to navigate).
To learn about Go's concurrency primitives,
watch [Go concurrency patterns](http://www.youtube.com/watch?v=f6kdp27TYZs)
([slides](/talks/2012/concurrency.slide)).