Protokol na komunikáciucez chybové kanály (Faulty channels)
proces sender má prístup k nekonecnej postupnosti dát ms
proces receiver: jeho výstupom je postupnost mr, ktorá splna nasledovnú špecifikáciu:
invariant mr ? ms
|mr| = n ? |mr| = n + 1
ak procesy komunikujú cez neohranicený spolahlivý kanál, riešenie je jednoduché:
c, ms := c; head(ms), tail(ms) {sender}
? c, mr := tail(c), mr; head(c) if c ? null {receiver}
kde initially c = mr = null a head(p); tail(p) ? p.
budeme riešit problém, ak c je chybné – správa môze byt stratená alebo duplikovaná, ale len konecne vela ráz
sender a receiver komunikujú cez zdielané premenné x a y:
sender píše do x a cíta y
receiver píše do y a cíta x