Risolvere il consenso per un numero noto di processi
-
04-11-2019 - |
Domanda
Mi è stato dato un oggetto con esattamente 2 operazioni test-and-reset
ciò imposta il valore dell'oggetto su 0 solo se precedentemente impostato su 1 e non restituisce un valore e fetch-and-add(v)
che aggiunge v
al valore dell'oggetto e restituisce il valore precedente.
Sono quasi sicuro che il numero di consenso di questo oggetto sia 2 e penso di aver trovato un algoritmo per questo (dovrei menzionare che il problema è il consenso binario):
if input = 0
test-and-reset(obj)
prev = fetch-and-add(obj, 3)
if (prev != 2)
decide(0)
else
decide(1)
else
prev = fetch-and-add(obj, 1)
if (prev = 0 or prev = 3)
decide(0)
else
decide(1)
Il problema era trovare un algoritmo senza attesa un algoritmo per n
processi che utilizzano un numero qualsiasi di questi oggetti (n
è conosciuto).
Il problema è che non sono sicuro di avere ragione (ne sono abbastanza sicuro e questo mi trattiene su questa idea)? E se ho ragione, non ho idea di come usarlo per risolvere il problema.
Grazie
Nessuna soluzione corretta