Advertisement
Luis_B

Untitled

Jun 17th, 2019
546
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.09 KB | None | 0 0
  1. program prog;
  2. var mutex,reader,writer:semaphore;
  3.     lec,nee,nle,writing:integer;
  4. process LECTOR;
  5.     begin
  6.         repeat
  7.             wait(mutex);
  8.             if (writing=1) or (nee>0) then
  9.             begin
  10.                 nle:=nle+1;
  11.                 signal(mutex);
  12.                 wait(reader);
  13.                 nle:=nle-1;
  14.             end;
  15.             lec:=lec+1;
  16.             if nle>0 then
  17.                 signal(reader)
  18.             else
  19.                 signal(mutex);
  20.             writeln('LEER RECURSO');
  21.             wait(mutex);
  22.             lec:=lec-1;
  23.             if (lec=0) and (nee>0) then
  24.                 signal(writer)
  25.             else
  26.                 signal(mutex);
  27.         forever;
  28.     end;
  29. process ESCRITOR;
  30.     begin
  31.         repeat
  32.             wait(mutex);
  33.             if (writing=1) or (lec>0) then
  34.             begin
  35.                 nee:=nee+1;
  36.                 signal(mutex);
  37.                 wait(writer);
  38.                 nee:=nee-1;
  39.             end;
  40.             writing:=1;
  41.             signal(mutex);
  42.             writeln('ESCRIBIR EN EL RECURSO');
  43.             wait(mutex);
  44.             writing:=0;
  45.             if nee>0 then
  46.                 signal(writer)
  47.             else begin
  48.                 if nle>0 then
  49.                     signal(reader)
  50.                 else   
  51.                     signal(mutex);
  52.             end;
  53.         forever;
  54.     end;
  55.    
  56. begin
  57.     initial(mutex,1);
  58.     initial(reader,1);
  59.     initial(writer,1);
  60.     lec:=0;
  61.     nle:=0;
  62.     nee:=0;
  63.     writing:=0;
  64.     cobegin
  65.         LECTOR;
  66.         ESCRITOR;
  67.     coend;
  68. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement