[ask] lamport bakery's critical code

Dear the Admin and all members.

Could you please help me to write this algorithm into a complete code?

1 var choosing: shared array[0..n-1] of boolean;
2 number: shared array[0..n-1] of integer;
...
3 repeat
4 choosing[i] := true;
5 number[i] := max(number[0],number[1],...,number[n-1]) + 1;
6 choosing[i] := false;
7 for j := 0 to n-1 do begin
8 while choosing[j] do (* nothing *);
9 while number[j] <> 0 and
10 (number[j], j) < (number[i],i) do
11 (* nothing *);
12 end;
13 (* critical section *)
14 number[i] := 0;
15 (* remainder section *)
16 until false;

Thanx in advance.
Topic archived. No new replies allowed.