Concurrency is about structure — designing a program to handle multiple tasks.

Parallelism is about execution — actually running multiple tasks simultaneously.

"Concurrency is about dealing with lots of things at once. Parallelism is about doing lots of things at once."

— Rob Pike


The Distinction

Aspect Concurrency Parallelism
What Managing multiple tasks Executing multiple tasks
How Interleaving, switching Simultaneous on multiple cores
Requires Design/structure Hardware (multiple CPUs)
Analogy One chef juggling multiple dishes Multiple chefs cooking at once

Key Insight


Where Async Fits

Async is a programming model for concurrency — it lets you express "start this, don't wait, continue" without blocking.

Model Mechanism
Threads OS-managed, preemptive switching
Async/Await Programmer-managed, cooperative yielding
Actors Message-driven, isolated state

All three are ways to achieve concurrency. Parallelism is whether they run on multiple cores.


Your Pipeline Context

Your arbitrage engine is concurrent (multiple data sources, multiple comparisons) and can be parallel (goroutines scheduled across cores). The sharding strategy determines how concurrency maps to parallelism.