vault backup: 2025-03-31 08:40:43
This commit is contained in:
parent
d525a87d5f
commit
163e33eb7e
1 changed files with 17 additions and 1 deletions
|
@ -21,3 +21,19 @@ This object is a **consensus object**: a *one-shot object* (every process can ac
|
||||||
- **Integrity:** every process decides at most once
|
- **Integrity:** every process decides at most once
|
||||||
- **Agreement:** the decided value is the same for all processes
|
- **Agreement:** the decided value is the same for all processes
|
||||||
- **Wait-freedom:** every invocation of propose by a correct process terminates
|
- **Wait-freedom:** every invocation of propose by a correct process terminates
|
||||||
|
|
||||||
|
Conceptually, we can implement a consensus object by a register X, initialized at ⊥, for which the propose operation is atomically defined as:
|
||||||
|
```
|
||||||
|
propose(v) :=
|
||||||
|
if X = ⊥ then
|
||||||
|
X <- v
|
||||||
|
return X
|
||||||
|
```
|
||||||
|
|
||||||
|
Universality of consensus holds as folows:
|
||||||
|
- given an object O of type Z
|
||||||
|
- each participant runs a local copy of O, all initialized at the same value
|
||||||
|
- create a total order on the operations O, by using consensus objects
|
||||||
|
- force all processes to follow this order to locally simulate O
|
||||||
|
- all local copies are consistent
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue