Concurrency Is Not Parallelism - Rob Pike
Rob Pike - 'Concurrency Is Not Parallelism' from Heroku on Vimeo.
- Go is a concurrent language.
- Concurrency is better than parallelism.
- Concurrency is the composition of independently executing things (functions or processes in the abstract).
Parallelism is the simultaneous execution of multiple things (possibly related, possibly not)
- Concurrency is dealing with a lot of things at once.
Parallelism is doing a lot of things at once.
Concurrency can be used to run things in parallel, but concurrency is about structuring things.
In a single-core computer you can have concurrency (and without that you would go mad), but you cannot have parallelism because at any given point in time there is only one thing that executes.
Concurrent composition of processes.
- Adding things to the design can make it more efficient.
Parallelism can come from better concurrent expression of the problem.
- Some history: Bell Labs and CSP Threads
- A previous talk Advanced Topics in Programming Languages: Concurrency/message passing Newsqueak
- Parellelism is not concurrency (Harper)
- A concurrent window system (Pike)
- Concurrent power series (McIlroy)
- Parallel but not concurrent