“The terms “concurrent computing”, “parallel computing”, and “distributed computing” have much overlap, and no clear distinction exists between them.”

Concurrency is two lines of customers with one register.

Concurrency is the ability of different parts or units of a program, algorithm, or problem to be executed out-of-order or in partial order, without affecting the final outcome.

Parallelism is two lines of customers with two registers.

A multicore processor is an example of parallelism.

Synchronous

Asynchronous

Sync vs Async

Generally speaking, sync strains CPU (due to thread allocation) the hardest

While async strains memory the hardest