在多播上下文中,接收消息的进程和传递消息的进程有什么区别?
分布式计算中的多播通常假设网络和应用程序之间的协议层提供一些保证,例如因果顺序。该协议层可能会延迟从网络到达的消息、省略消息、使用额外的控制消息……通常,这是最重要的层,需要有趣的算法。
在这种情况下,在描述此类算法时,接收(和发送)是协议层和底层网络通道之间的接口。 Deliver(和多播)是协议层和应用程序之间的接口。因此,这是一种命名约定,可以轻松区分到达不同层的消息,而不必说“在协议处接收”(又名“接收”)和“在应用程序接收”(又名“交付”)。
示例:假设您正在执行因果关系并且有 m1->m2
。现在假设
m2
在
m1
之前到达进程 p(即被进程 p 接收到)。
m2
无法立即向应用程序显示(即已交付)。
m1
收到之后才能发货,然后先发货。