multithreading - Distributed computing vs threads -
How is similar computing and threading distributed? I have found two papers coming up on many opposite conclusions:
"Multi threading is easier than networking. How threading is easy and like a network code"
< P> (I have a belief that they are so similar that these two methods can be done with the same code - but maybe I am wrong)
"A note on distributed computing" P>
(And it makes a strong distinction)
I am sure the truth is somewhere in the middle. What does golden mean? Is there any technique that unites those two criteria? Or have such attempts failed due to fundamental differences between networking and concurrency?
I have never found them very similar to the one I used to run on a machine for the purposes of this post. The hardware thread should be set to "node". Therefore a quad core machine is four nodes, as is the group of four single processor boxes.
Each node will typically be running some processing, and some types of cross-node communication will be required. Normally the first example of this communication is telling the node what to do. For this communication, I can use shared memory, scomphrs, shared files, named pipes, sockets, remote processing calls, distributed COM etc. But the most easily used shared memory and securities are not generally available on one network. Shared files may be available, but performance is generally poor. Sockets are the most common and most flexible options on the network instead of a more sophisticated system. At that time you have to deal with details of network architecture including latency, bandwidth, packet loss, network topology and more.
If you start with a line of work, use simple shared memory to do nodes stuff on the same machine. You can also write it in the lockless and it will work basically. With the nodes on the network, where can you put the queue? If you centralize it, then the machine may have very high bandwidth costs. Try to distribute it and things get very complicated.
In general, those who deal with such parallel structures, I have found, choose embarrassing parallel problems to solve. Refreshing comes to mind. In addition to job distribution, much more cross-node communication is not necessary. To ensure that there are many problems in this way, but I think distributed computing is basically a bit confusing to suggest this same as threading.
Now if you are going to write that treats equally for a distributed system, using pure message and if any thread is considered "main" and not so, then yes They are going to be very similar but what you have done is a pretense that you have distributed architecture and it has been implemented in threads. The thing is that parallel parallelism is a very easy matter in comparison to true distributed computing. You can level the two in the same problem, but by selecting the hard version and sticking it tightly and the results will not be as much as they can when all the nodes are local for a machine. You are not taking advantage of special cases.
Comments
Post a Comment