|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Strada in Chianti, Firenze
Messaggi: 12998
|
[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 Codice:
(EX(V1,V2) Codice:
<tmp := V1; V1 := V2; V2 := tmp> Io ho una soluzione ma il professore dice che è sbagliata. Chi mi aiuta? ![]() Grazie!
__________________
|
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
Quote:
|
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Strada in Chianti, Firenze
Messaggi: 12998
|
Quote:
Codice:
int ts(k)
{
int ris = 1;
EX(ris, K);
return(ris);
}
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.
__________________
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Strada in Chianti, Firenze
Messaggi: 12998
|
Insomma: secondo voi la soluzione sopra è corretta o no?
![]() Un'altra possibile, trovata sul web, è questa: Codice:
boolean lock = false;
boolean key;
process Pi {
while (true) {
key = true;
while (key = = true)
swap(lock,key);
CS
lock = false;
NCS
}
}
__________________
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:32.





















