Luca Sepe

Concurrency is not parallelism

concurrency design golang go
Concurrency Parallelism
Interruptability Independentability
Separation of tasks to provide interleaved execution Simultaneous execution of multiple pieces of work in order to increase speed
A way of structuring your programs: it has to do with how programs are written A way of making your programs go faster; it has to do with how programs are run
You decide to learn Go! You start watching a video tutorial, you need to pause the video, apply what been said in code then continue watching You're a professional Go programmer……and you enjoy listening to calm music while coding

Concurrency             Concurrency + parallelism
(Single-Core CPU)       (Multi-Core CPU)
 ___                     ___ ___
|th1|                   |th1|th2|
|   |                   |   |___|
|___|___                |   |___
    |th2|               |___|th2|
 ___|___|                ___|___|
|th1|                   |th1|
|___|___                |   |___
    |th2|               |   |th2|

Move a pile of obsolete language manuals to the incinerator…

This is a concurrent design.

We can parallelize on the other axis…

  • the concurrent design makes it easy - eight gophers, all busy!

Or maybe no parallelization at all…

Keep in mind, even if only one gopher is active at a time (zero parallelism), it's still a correct and concurrent solution.

References

https://blog.golang.org/concurrency-is-not-parallelism

https://stackoverflow.com/questions/1050222/what-is-the-difference-between-concurrency-and-parallelism