Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program prog;
- var mutex,reader,writer:semaphore;
- lec,nee,nle,writing:integer;
- process LECTOR;
- begin
- repeat
- wait(mutex);
- if (writing=1) or (nee>0) then
- begin
- nle:=nle+1;
- signal(mutex);
- wait(reader);
- nle:=nle-1;
- end;
- lec:=lec+1;
- if nle>0 then
- signal(reader)
- else
- signal(mutex);
- writeln('LEER RECURSO');
- wait(mutex);
- lec:=lec-1;
- if (lec=0) and (nee>0) then
- signal(writer)
- else
- signal(mutex);
- forever;
- end;
- process ESCRITOR;
- begin
- repeat
- wait(mutex);
- if (writing=1) or (lec>0) then
- begin
- nee:=nee+1;
- signal(mutex);
- wait(writer);
- nee:=nee-1;
- end;
- writing:=1;
- signal(mutex);
- writeln('ESCRIBIR EN EL RECURSO');
- wait(mutex);
- writing:=0;
- if nee>0 then
- signal(writer)
- else begin
- if nle>0 then
- signal(reader)
- else
- signal(mutex);
- end;
- forever;
- end;
- begin
- initial(mutex,1);
- initial(reader,1);
- initial(writer,1);
- lec:=0;
- nle:=0;
- nee:=0;
- writing:=0;
- cobegin
- LECTOR;
- ESCRITOR;
- coend;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement