◆Shared Variables:

int turn;

initially turn = 0;

boolean flag[2];

initially flag[0] = flag[1] = false.

◆flag[i]=ture --> Pi ready to enter its critical section

◆turn = i --> Pi can enter its critical section

Process Pi

do{

flag[i] = true;

turn = j;

while(flag[j] && trun ==j)

;

critical section

flag[i] = false;

remainder section

}while(1);