消息传递顺序约束与广播算法详解
1. 消息传递的顺序约束
在消息传递系统中,消息的传递顺序至关重要。消息图能够捕捉消息共同广播时的直接因果优先级,即一个消息的共同传递仅取决于图中其直接前驱消息的共同传递。例如,在图中,消息 m4 的共同传递受 m3 和 m2 共同传递的约束,而 m3 的共同传递受 m1 共同传递的约束,所以 m4 的共同传递并不直接受 m1 共同传递的约束。这意味着消息只需携带由关系 ≺im 定义的图中其直接前驱的控制信息。
2. 因果屏障与本地数据结构
为每个应用消息关联一个标识(由序列号和进程标识组成的对)。与应用消息关联的因果屏障是消息因果图中该消息直接前驱消息的标识集合。每个进程管理以下数据结构:
- causal_barrieri :是进程 pi 下一次共同广播消息的直接前驱消息的标识集合,初始为空。
- deliveredi[1..n] :与之前算法中的含义相同,初始化为 [0,...,0] , deliveredi[j] 包含进程 pi 已共同传递的来自进程 pj 的最后一条消息的序列号。
- sni :是一个本地整数变量,初始化为 0,用于统计进程 pi 已共同广播的消息数量。
3. 基于因果屏障的因果广播算法
以下是基于因果屏障的因果广播算法代码:
operation co_broadcast(m) is
(1)
for each j
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



