Termin przesłania rozwiązania przez moodle: 23.03.2014 23:59. Za każde rozpoczęte 12 godzin opóźnienia odejmujemy jeden punkt.
 
    (i = 0 .. N-1) proces P(i) {
        powtarzaj {
            chce[i] = true;
            czekaj, aż dla wszystkich k z [0..N-1] zachodzi !(chce[k] && we[k]);
            we[i] = true;
            jeśli dla pewnego k z [0..N-1] zachodzi chce[k] && !we[k], to wykonaj             (*)
            {    
                chce[i] = false;
                czekaj, aż dla pewnego k z [0..N-1] zachodzi wy[k];                          (**)
                chce[i] = true;
            };
            wy[i] = true;
            czekaj, aż dla wszystkich k z [i+1..N-1] zachodzi !we[k] || wy[k];
            czekaj, aż dla wszystkich k z [0..i-1] zachodzi !we[k];
  
            /* SEKCJA KRYTYCZNA */
            wy[i] = false; we[i] = false; chce[i] = false;                                  (***)
        }
    }
 
Intuicyjne znacznie zmiennych:
    czekaj, aż dla wszystkich k z [0..N-1] zachodzi (!we[k] || wy[k]);
 
Zmodyfikuj protokół następująco (modyfikacja ta opisana jest w pracy [1]):
  Uwagi i pytania proszę kierować do Sławka Lasoty. Ostatnia modyfikacja: 20/03/2014