fermo restante che ho compreso il concetto di sezione critica e di
istruzione testAndSet, vorrei un aiutino a comprendere cosa fa il codice
dopo la Sezione Critica. Quiesta versione risolve il problema della
attesa limitata, in pratica ᅵ uno pseudocodice, e non ho compreso se
l'IF ELSE finale fa parte del corpo dell'ultimo while oppure no....
do {
attesa[i] = true;
chiave = true;
while (attesa[i] && chiave)
chiave = TestAndSet(&lock);
attesa[i] = false;
//sezione critica
j = (i + 1) % n;
while ((j != i) && !attesa[i]) <----
j = (j + 1) % n;
if (j==i)
lock = false;
else
attesa[j] = false; <------
//sezione non critica
} while(true);
grazie e buon anno!
> fermo restante che ho compreso il concetto di sezione critica e di
> istruzione testAndSet, vorrei un aiutino a comprendere cosa fa il codice
> dopo la Sezione Critica.
Fossi in te lo chiederei nel ng giusto. :)
Bye.
> Fossi in te lo chiederei nel ng giusto.
Infatti è in multipost.
Ma TestAndSet non doveva essere un'istruzione dell'ISA e quindi atomica
per poter funzionare o confondo con qualche altro strumento per i
problemi di concorrenza?
mah.. dal quel che ricordo si chiamava tsl (test and set lock) operazione
atomica che copiava il valore di un registro e settava il registro ad un
valore definito..
e se non ricordo male era stata inserita per il problema della mutua
esclusione etc.. etc..
se non sbaglio si puo' implementare facilmente con l'operazione di xchg
(exchange) ma non ci giurerei.. e' una vita che non programmo in asm..