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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top