next up previous
Next: Disable interrupts Up: No Title Previous: Example 1

Example 2

var enter1, enter2 = false : boolean ;
    turn = 1 : integer ; {i.e. P1}

Process P1
 loop
 {entry protocol}
 enter1 := true; {announce intent to enter}
 turn := 2 ; {set priority to P2}

 while enter2 and turn=2
   do nothing ; {wait if other process in CS}

 {critical section}

 enter1 := false {exit protocol}
 end
end

Process P2
 loop
 {entry protocol}
 enter2 := true ; {announce intent to enter}
 turn := 1 ; {set priority to other process}

 while enter1 and turn=1
  do nothing ; {wait if other process is in CS}

 {critical section}

 enter2 := false ; {exit protocol}
 end
end

From Example 1 :

From Example 2 :

Aim to achieve synchronisation : simplest way -


Omer F Rana
Tue Feb 11 19:19:09 GMT 1997