Added upstream version.
[vlp.git] / examp / drugi.log
1 program Second;
2
3 unit aSemaphore: process(node:integer);
4    unit pass: procedure;
5    begin
6      return  enable free disable pass;  
7    end pass;
8    unit free: procedure;
9    begin
10       return enable pass disable free;  
11    end free;
12
13    unit fin: procedure; 
14    begin
15       bol := false;
16    end fin;
17    var bol: boolean;
18 begin
19   bol := true;
20
21   return;
22   enable  pass ;
23   while bol
24   do
25     accept  fin;
26   od; 
27   writeln("koniec semafora");
28 end  aSemaphore;
29
30  unit  writer:  process (node:integer, nr:integer,s: string, sem: aSemaphore);
31    var  i: integer,
32         A:  arrayof  char;
33
34    unit fin: procedure;
35    begin
36    end fin;
37  begin
38     A:=unpack(s);
39     return;
40
41     call  sem.pass;
42     writeln("jestem w procesie ",nr);
43     for  i := lower(a)  to  upper(a)
44     do
45         write(a(i));
46     od;
47     writeln;
48     writeln("skonczyl",nr);
49     call  sem.free;
50     accept fin; 
51  end  writer;
52
53  var  s: aSemaphore, w1, w2: writer, i: integer;
54
55  begin   s :=  new  aSemaphore(0);
56   resume(s);
57   w1:= new  writer(0,1,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",s);
58   w2:= new  writer(0,2,"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", s);
59   writeln("press Enter"); 
60   readln;
61   resume(w1);
62   resume(w2);
63   call w1.fin; call w2.fin;
64   call s.fin; 
65   writeln("polaczone procesy");
66 (*   call endrun;  *)
67  end  Second\0\0