Asynchrony vs Concurrency vs Parallelism

concepts csharp

Asynchrony

Computer architectures usually have a cpu that processes instructions and an I/O controller that communicates with a network. The cpu should not be kept waiting for a network call to complete. Usually, the cpu gives the I/O controller a handle to callback when it has fetched what’s required. This way the cpu continues processing other instructions while the I/O controller makes the db calls. This is asynchrony.

Parallelism

There are 8 cpu cores and they have to be kept busy processing a certain list of data that has been loaded into memory from a csv. This is parallelism.

Concurrency

Concurrency means doing multiple things at the same time. If you have 8 cores, then its very easy to be concurrent but if you have 1 core then an illusion of concurrency needs to be created by timesharing cpu threads or any other such strategy.