Algorytm Dekkera - poprawny
1: KI, K2 :integer := 1;
2: Czyja_kolej: integer := 1;
3: 4: 5: 6: 7 : 8:
9 :
10 11 12
13
14
15
16
17
18
19
20 21 22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
task body Pl is begin loop
Sekcja lokalna 1;
KI :=0 ; loop
if K2 = 1 then exit; if Czyja kolej = 2 then KI :=1T; loop
if Czyja_kolej = 1 then exit; end loop;
KI:=0 ; end if; end loop;
Sekcja krytyczna 1;
KI :=1 ;
Czyj a_kolej := 2 ; end loop; end Pl;
task body P2 is begin loop
Sekcja lokalna 2;
K2:=0 ; loop
if KI = 1 then exit; if Czyja kolej = 1 then K2 :=37; loop
if Czyja_kolej = 2 then exit; end loop;
K2:=0 ; end if; end loop;
Sekcja krytyczna 2;
K2:=1 ;
Czyj a_kolej := 1 ; end loop; end P2;
Dziedziny zastosowań . Wzajemne wyklućzanie. 14