class Dekker implements Lock { boolean wantCS[] = {false, false}; int turn = 1; public void requestCS(int i) { // entry protocol int j = 1 - i; wantCS[i] = true; while (wantCS[j]) { if (turn == j) { wantCS[i] = false; while (turn == j) ;// busy wait wantCS[i] = true; } } } public void releaseCS(int i) { // exit protocol turn = 1 - i; wantCS[i] = false; } }