在多播的上下文中,接收消息的进程和传递消息的进程有什么区别?
1 回答
分布式计算中的组播通常假设某些保证,例如因果顺序,是由网络和应用程序之间的协议层提供的。这个协议层可能会延迟从网络到达的消息,忽略消息,使用额外的控制消息,......通常,这是最重要的层,需要有趣的算法。
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).
一个例子:假设你正在执行因果关系并且有m1->m2
. 现在假设在之前m2
到达(即被接收到)进程 p m1
。m2
不能立即显示给应用程序(即交付)给应用程序。它只能在收到后交付,然后先交付。m1