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 ] ] |