do {
flag[0] = true;
turn = 1;
while (flag[1] && turn == 1);
critical section
flag[0] = false;
remainder section
} while (true);
flag[1] = true;
turn = 0;
while (flag[0] && turn == 0);
flag[1] = false;