Ask HN: How to distinguish between concurrent, parallel, sync and async I have seen all four terms used interchangeably. I know this sounds repeated, but I want a little more specific answer. I have already done my research. I found quite satisfactory results[0] explaining what each term meant. But what is still not clear to me, is how exactly would we differentiate them if we had to represent them through a Venn diagram. My current understanding is the following - 1. All parallel things are concurrent, but all concurrent things are not parallel. 2. No synchronous things are asynchronous, and vice-versa. 3. Some synchronous things are concurrent, and some synchronous things are parallel. 4. All asynchronous things are concurrent, but only some asynchronous things are parallel. https://i.imgur.com/fVK22xv.png My question is whether my current understanding of the difference is correct. If not, how must they be categorized and why? [0]: I watched Rob Pike's video on Concurrency is not Parallelism - https://www.youtube.com/watch?v=oV9rvDllKEg. And the following response on Reddit explaining the difference between synchronous and asynchronous code - https://www.reddit.com/r/computerscience/comments/ow1336/comment/h7d1h9d/ I have tried to summarize my findings in a blog post if you're willing to go through it - https://www.kush.in/post/a-sink-and-a-weight_1 |