Skip to content

Concurrency vs. Parallelism Distinction

Concurrency is about structuring a program to handle multiple things at once (composition of independently executing processes); parallelism is about executing multiple things simultaneously for speed. Concurrency is a design concern; parallelism is an execution concern.

Tension Addressed

Simplicity vs. Scalability

Recognizable As

Code structured with multiple logical threads of control (concurrent) vs. code leveraging multiple CPU cores for throughput (parallel). A single-core machine can run concurrent code; parallelism requires multiple execution units.

Canonical Sources

Rob Pike, "Concurrency Is Not Parallelism" (2012); Hoare, "Communicating Sequential Processes" (1978)

Transfers To

Distributed systems (nodes vs. simultaneous execution), UI programming (event handling vs. background work), operating systems (multiprogramming vs. multiprocessing)

This distinction matters because you can write concurrent code that never runs in parallel (single-threaded event loops), and parallel code that isn't designed concurrently (data parallelism on arrays). Conflating them leads to poor design choices.