local y1, y2 :bool where y1 = false, y2 = false
local t :int where t = 1
P1:: [
l0: loop forever do [
l1: noncritical;
l2: y1 := true;
l3: while (y2) do
l4: if (t = 2) then [
l5: y1 := false;
l6: await (t = 1);
l7: y1 := true
];
l8: critical;
l9: t := 2;
l10: y1 := false
]
]
||
P2:: [
m0: loop forever do [
m1: noncritical;
m2: y2 := true;
m3: while (y1) do
m4: if (t = 1) then [
m5: y2 := false;
m6: await (t = 2);
m7: y2 := true
];
m8: critical;
m9: t := 1;
m10: y2 := false
]
]
|