Looking at a "Distributed" algorithm from a textbook on distributed algorithms (e.g. Building a spanning tree, Broadcast/Convergecast.) I found that one can implement it using Golang's concurrency primitives (i.e channels and goroutines)
AFAIK "distributed" means things are happening on multiple machines. But this is running in a single process. (the fact that all threads are sharing memory is irrelevant since the algorithm's implementation doesn't depend or make use of it)
So can we call the system consisting of the threads + channels a distributed system?
This seems to have all characteristics:
- threads run independently and in parallel much like nodes (assuming enough processors)
- communication via message-passing
If we choose to not call it a distributed system, then why is the algorithm labeled distributed if it can run on a non-distributed system?