What is the difference between a process receiving a message and a process delivering a message, in the context of a multicast?
What is the difference between a process receiving a message and a process delivering
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Multicast in distributed computing often assumes that some guarantees, such as causal order, are provided by a protocol layer between the network and the application. This protocol layer might delay messages that have arrived from the network, omit messages, use additional control messages, … Usually, this is the most important layer, where interesting algorithms are needed.
In this context, when describing such algorithms, receive (and send) is the interface between the protocol layer and the underlying network channels. Deliver (and multicast) is the interface between the protocol layer and the application. It is thus a naming convention to make it easy do distinguish message arrival at different layers, instead of having to say "received at the protocol" (aka received) and "received at the application" (aka delivered).
An example: Assume that you are enforcing causality and have
m1->m2. Now assume thatm2arrives to (i.e. is received by) process p beforem1.m2cannot be shown to the application (i.e. delivered) immediately. It can only be delivered afterm1is received and then delivered first.