当算法达到终止配置时,分布式算法的计算终止,即配置中不存在进一步可应用的算法步,每个进程处于允许接收的状态,且所有信道为空,即消息终止,则这个配置是终止的。
1、Dijkstra-Feijen-Van Gasteren算法利用同步消息传递,检测基本计算的终止性。
2、
规则1:只有进程处于被动状态,它才处理令牌。
规则2:发送进程变成黑色。(发送基本消息意味着该进程处于活动,消息没有实现终止)
规则3:当黑色进程转发令牌时(除非进程p0),令牌变成黑色。
规则4:当波动不成功结束时,p0开始新一次波动(在上一次波动中,有消息仍在信道中运行,仍有进程在活动)
规则5:在发送令牌之后,每个进程接着变成白色。
3、算法:
var statep:(active,passive);
colorp:(white,black);
Cpq:{statep=active}
begin (*p sends a basic message,which is received by q*)
colorp:=black;(*Rule 2*)
statep:=active
end
Ip:{statep=active}
begin statep:=passive end
start the detection,executed once by p0:
begini send <tok,white> 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)
then Annouce
else send <tok,white> to pN-1 (*Rule 4*)
else if (colorp=white) (*Rule 3*)
then send <tok,c> to Nextp
else send <tok,black> to Nextp;
colorp:=white (*Rule 5*)
end