mirror of
https://github.com/Steffo99/appunti-magistrali.git
synced 2024-11-25 11:34:18 +00:00
1 KiB
1 KiB
algoritmo di consenso con fallimenti su grafo completo, che estende one step.
Funzionamento
Il leader invia il suo messaggio iniziale ad alcuni nodi, e questi, se lo ricevono direttamente da esso, lo inoltrano a loro volta a tutti i loro vicini, che però non lo inoltreranno.
Comportamento
LEADER
All'impulso spontaneo, invia il suo messaggio:
spontaneously! {
send!(0..MAX_FAULTS, Message {leader: true});
state!(DONE);
}
Se lo riceve indietro, non fa niente:
on_receive! {
_ => {},
}
SLEEPING
Se riceve il messaggio, lo inoltra a tutti i suoi vicini, poi passa allo stato DONE
:
on_receive! {
_ => {
send!(!sender, Message {leader: false});
state!(DONE);
},
}
DONE
Non fa niente:
on_receive! {
_ => {},
}
algoritmo corretto
==...==
costo computazionale distribuito
Comunicazione
==...==
Spazio
==...==
Tempo
==...==