home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
cs.rhul.ac.uk
/
www.cs.rhul.ac.uk.zip
/
www.cs.rhul.ac.uk
/
pub
/
CS375
/
dekker.pfc
< prev
next >
Wrap
Text File
|
1999-02-05
|
943b
|
59 lines
program dekker;
(* Dekker's solution to the mutual exclusion problem *)
var
turn: integer;
flag1, flag2: boolean;
count: integer;
process turnstile1;
var
loop: integer;
begin
for loop := 1 to 20 do
begin
flag1 := true;
while flag2 do
begin
flag1 := false;
while turn = 2 do null;
flag1 := true
end;
count := count + 1;
turn := 2;
flag1 := false
end
end;
process turnstile2;
var
loop: integer;
begin
for loop := 1 to 20 do
begin
flag2 := true;
while flag1 do
begin
flag2 := false;
while turn = 1 do null;
flag2 := true
end;
count := count + 1;
turn := 1;
flag2 := false
end
end;
begin
count := 0;
turn := 1; (* it doesn't matter whether this is 1 or 2 *)
cobegin
turnstile1;
turnstile2
coend;
writeln('Total admitted: ',count)
end.