gave a great 2012 Google I/O presentation entitled, "Go Concurrency Patterns." It's definately worth watching. One small nit, the hijacking of the generic meaning of the terms concurrency and parallelism.
Back when single core processors were ubiquitous, the term pseudo threading was used to describe threads that existed in context concurrently, or in parallel if you will, but that executed sequentially. Modern processors now have multiple cores that can execute threads-whose contexts exist concurrently-in parallel.
It's a bit of a misnomer to state that Go doesn't do parallelism; on a multicore processor it's possible to pin goroutines to system threads and watch them execute in parallel. Also, stating categorically that "concurrency is not parallelism" just adds to the confusion that already exists.
Concurrency and parallelism don't tell us the what. What is concurrent? What is parallel? Thread execution is parallel. Thread execution is concurrent. Thread context is parallel. Thread context is concurrent. Somewhere along the way parallelism became (forever?) attached to data and concurrency became (forever?) attached to threads.
It's obvious that one of these is not like the other:
Thread execution concurrency is not like data execution parallelism.
Thread context concurrency is not like thread execution parallelism.
Instruction level execution parallelism is not like data execution parallelism.
Given my comments above, concurrency and parallelism can be interchanged without losing any of the intended meaning. E.g. the following comment has the same meaning as it did in paragraph two, Modern processors now have multiple cores that can execute threads-whose contexts exist in parallel-concurrently.
During any discussion it's desirable to have all parties on the same page, especially true when it comes to technical matters. It's straightforward to lay out a mandate, to be referenced explicitly, when discussing something specific, e.g. henceforth, when discussing Golang, concurrency shall be mutually exclusive to parallelism, but it's important to remember that the normative kicks in when the discussion context changes.