当算法达到终止配置时,分布式算法的计算终止,即配置中不存在进一步可应用的算法步,每个进程处于允许接收的状态,且所有信道为空,即消息终止,则这个配置是终止的。
1、
规则M:当发送消息时,进程P增加它的消息计数器增加1.当接收一条消息时,进程P的消息计数器减少1。
规则1:当进程处于被动状态,只处理令牌。
规则2:接收进程变成黑色。
规则3:当黑色进程转发令牌时,令牌变成黑色。
规则4:当波动不成功结束时,p0开始新一次波动(在上一次波动中,有消息仍在信道中运行,仍有进程在活动)
规则5:在发送令牌之后,每个进程接着变成白色。
3、算法:
var statep:(active,passive);
colorp:(white,black);
mcp:integer init 0;
Sp:{statep=active}
begin send <mes>;
mcp:=mcp+1(*Rule M*)
end
Rp:{A message <mes> has arrived at p}
begin receive <mes>;statep:=active;
mcp:=mcp-1;(*Rule M*)
colorp:=black (*Rule 2*)
end
Ip:{statep=active}
begin statep:=passive end
start the detection,executed once by p0:
begini send <tok,white,0> to pN-1 end
Tp:(*Process p handles the token <tok,c>*)
{statep=passive}(*Rule 1*)
begin if p=p0
then if (c=white)∧(colorp=white)∧(mcp+q=0)
then Annouce
else send <tok,white,0> to pN-1 (*Rule 4*)
else if (colorp=white) (*Rule 1 and 3*)
then send <tok,c,q+mcp> to Nextp
else send <tok,black,q+mcp> to Nextp;
colorp:=white (*Rule 5*)
end