View Full Version : [PROGRAMMAZIONE CONCORRENTE] - Critical section con SWAP
Ciao ragazzi,
un aiuto per un esame universitario... programmazione per modo di dire insomma. Praticamente devo implementare una sezione critica usando una funzione di swap (EX(V1,V2) definita come segue: <tmp := V1; V1 := V2; V2 := tmp> con V1 e V2 variabili e tmp registro interno.
Io ho una soluzione ma il professore dice che è sbagliata. Chi mi aiuta? :help:
Grazie! ;)
Ciao ragazzi,
un aiuto per un esame universitario... programmazione per modo di dire insomma. Praticamente devo implementare una sezione critica usando una funzione di swap (EX(V1,V2) definita come segue: <tmp := V1; V1 := V2; V2 := tmp> con V1 e V2 variabili e tmp registro interno.
Io ho una soluzione ma il professore dice che è sbagliata. Chi mi aiuta? :help:
Grazie! ;)
incomincia postando la tua soluzione ;)
incomincia postando la tua soluzione ;)
Io pensavo di emulare un test-and-set con una soluzione di questo tipo:
int ts(k)
{
int ris = 1;
EX(ris, K);
return(ris);
}
e usarla poi per gestire l'accesso alla CS.
Il problema è che il professore mi dice che non si riesce a garantire che le istruzioni all'interno della graffa, sono atomiche. (ancora devo capire se si riferisce solo alla prima o a tutte, ma credo tutte visto che un'assegnamento è atomico a livello hw).
Grazie.
Insomma: secondo voi la soluzione sopra è corretta o no? :mbe:
Un'altra possibile, trovata sul web, è questa:
boolean lock = false;
boolean key;
process Pi {
while (true) {
key = true;
while (key = = true)
swap(lock,key);
CS
lock = false;
NCS
}
}
Può funzionare?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.