3 ms·
Is it just me that thinks the title is wrong ? I think networking is about concurrency rather than parallelism and parallelism is merely a resource that can be
by toolslive 10y ago
Is it just me that thinks the title is wrong ?
I think networking is about concurrency rather than parallelism and parallelism is merely a resource that can be used when your code was written with concurrency in mind.
- jondubois 10y agoI don't think so because the article discusses sharding cross multiple processes (and therefore CPU cores) - Running in parallel. You can handle multiple concurrent connections/requests on a single CPU core; but that would not classify as parallel processing. So the term 'parallel' is more specific than 'concurrent'. The paragraph under 'Introduction' here https://en.wikipedia.org/wiki/Concurrent_computing https://en.wikipedia.org/wiki/Concurrent_computing seems to give a pretty good definition.
- toolslive 10y ago"Understanding and expressing scalable concurrency" ( https://people.mpi-sws.org/~turon/turon-thesis.pdf https://people.mpi-sws.org/~turon/turon-thesis.pdf ) addresses the difference between parallelism and concurrency in detail (page 11-12). Rereading that, I'm pretty sure the title is wrong.
- jondubois 10y agoI just read those few pages of the thesis. It seems to imply that concurrency has some sort of 'locking' or 'coordination' component. The 'Thinking in Parallel' article makes no mention of either of those concepts - Quite the opposite. In French, the word 'concurrent' literally means 'competitor' - Which in our case implies competition for computational resources (E.g. specific memory locations) - On the other hand, the 'Thinking in Parallel' article talks about how to partition resources in a way which removes the element of competition between processes - So the word 'Parallel' seems fitting.
- stonemetal 10y agoUnfortunately in the last few years concurrent and parallel have taken on technical meaning, so any understanding gained from what it means in the common tongue doesn't really help. Concurrent is for separate entities working together in a coordinated manner. A prime example is threads working together on a work queue. Parallel is for a singular entity doing multiple things at the same time. For example a vector instruction that does multiple additions at the same time.
- marcosdumay 10y agoThat's muddy. If you are talking about a single system, running an a black-box cluster, all the networking inside the cluster is just an artifact of parallelism (not very different from what happens on the networking between your processor cores and the memory, by the way). If you are talking about the construction of the cluster, or how to port software to it, you'll break it down into a level where that network is now in your "outside world", and the ordering over it must be called concurrency.