Algo les 4 compteurs pour détection de terminaison lors d'application repartie.

version en pdf (de franck Meilleurat)

Multivagues

remise à 0 des comteurs

init

Ei=0;
Ri=0
initiateuri=i

sEi=0;    // somme des Ei

sRi=0     // somme des Ri

sRiOld=-1 // ancienne valeur de la vague

sEiOld=-1 // ancienne valeur de la vague

SEsosi=0  //somme des messages emis totaux!!!!
SRsosi=0

Passif=vrai

parenti=0

NbvoisinA = Nombre de voisins // nombre de vosins attendus


début activite sur l'app de base

Passifi=faux

Fin d'activite
Passifi=vrai



Demande d'emission d'un message de l'app  de base
recevoir(m) de l'app de base
Ei++
envoyer([msg] m)

reception d'un msg pour l'app de base
recevoir([msg] m)
Ri++
envoyer(m) a l'app de base


Initiateur == i et parenti==0 et passif == vrai(Debut vague)
parent=i
Envoyer([bleu] i) aux voisins

Reception d'un msg bleu (arrive vaque)
recevoir([bleu] k) de Sj

SI parent==0 OU k < initiateuri
    Si initiateuri!=k // changement d'initiateur
       sEiOld=sEsosi
       sRiOld=sRsosi
    FinSI
    initiateuri=k
    parenti=j
    nbvoisinsA= Nombre de voisins -1;
    SI nbvoisins>0
       envoyer([bleu] k) aux voisins
    FinSI
sinon
    Si k == initiateuri
        envoyer([rouge] k,0,0) a Sj
    finSI
finSi
Reception d'un msg rouge (retour vague)
Recevoir([rouge] k,E R)
SI k == initiateuri
    sEi=E + sEi
    sRi=R + sRi
    nbvoisinsA--
finSi

Passif == vrai et nbvoisin == 0 et parenti!=0
sEi = sEi+Ei
sRi = sRi+Ri


SI
parent=i // racine
   
sEi = sEi + max(sEiOld,0)
    sEi = sEi - max(sRiOld,0)
    sRi = sRi - max(sRiOld,0)

    Si sEi == 0
       Fin
    Sinon
      
sRiOld = sRi
                 sEiOld = sEi
    FinSI
sinon
   envoyer([rouge]initiateuri,sEi, sRi)
finSI

SEsosi=SEsosi+Ei
SRsosi=SRsosi+Ri
parenti=0;
nbVoisinA = nombre de voisins
sEi=0
sRi=0
Ei=0
Ri=0


Dernière modification : 28/07/2006.