Deadlock o non deadlock
Buongiorno a tutti! Ho un problema a capire se un certo algoritmo di sincronizzazione può portare a deadlock o meno. Il problema è riportato nel libro "The art of multiprocessor programming" a pagina 26, dove dicono che ci sia deadlock. Il codice di sincronizzazione è il seguente:
Il libro dice che in un'eventuale esecuzione sequenziale delle lock da parte di due Thread A e B, si può incorrere in un deadlock. Io al massimo vedo la possibilità di finire in starvation a causa dell'altro processo che non ha interesse a chiamare la lock.
Voi cosa ne pensate?
- Codice: Seleziona tutto
class LockTwo {
private volatile int victim;
public void lock(){
int i = ThreadID.get();
victim = i;
while(victim == i);
}
public void unlock(){}
}
Il libro dice che in un'eventuale esecuzione sequenziale delle lock da parte di due Thread A e B, si può incorrere in un deadlock. Io al massimo vedo la possibilità di finire in starvation a causa dell'altro processo che non ha interesse a chiamare la lock.
Voi cosa ne pensate?