Salve a tutti,
su wikipedia ho trovato il seguento algoritmo di dekker:

codice:
// dichiarazione delle variabili globali comuni
boolean flag0 = false, flag1 = false;
int turno = 0; // oppure: int turno = 1;

// processo #0
// ...
P:   flag0 = true;
     while (flag1) { // busy waiting
        if (turno == 1) {
           flag0 = false;
           goto P;
        }
     }
     // <sezione critica>
     flag0 = false;
     turno = 1;
// ...

// processo #1
// ...
P:   flag1 = true;     
     while (flag0) { // busy waiting
        if (turno == 0) {
           flag1 = false;
           goto P;
        }
     } 
     // <sezione critica>
     flag1 = false;
     turno = 0;  
// ...
Non riesco bene a capirlo, ovvero, a che serve la variabile turno? non basterebbe utilizzare il flag?