12.07.2015 Views

Spis treœci - Patrz

Spis treœci - Patrz

Spis treœci - Patrz

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

6.4.2 Implementacja semafora unixowegoPonieważ operację nadania wartości semaforowi unixowemu można wykonać w każdejchwili, należy ją akceptować zarówno na początku wykonywania procesu SEM_UNIX, jak iwewnątrz głównej pętli. Operacja Z ma tę własność, że w chwili, gdy semafor osiągnie wartość0, wszystkie procesy wstrzymane na operacji Z kończą jej wykonywanie. Stąd w procesieSEM_UNIX po spotkaniu się z jednym procesem w wejściu Z trzeba spotkać się natychmiastze wszystkimi oczekującymi tam procesami.task SEM_UNIX isentry NADANIE_WART(x: in Integer);entry P;entry V(m: in Integer);entry Z;entry nP(m: in Integer; b: out Boolean);entry nZ(b: out Boolean);entry CZEKP(w: out Integer);entry CZEKZ(w: out Integer);entry WART(w: out Integer);end;task body SEM_UNIX iss: Integer;beginaccept NADANIE_WART(x: in Integer) dos := x;end NADANIE_WART;loopselectwhen s > 0 => accept P; s := s - 1;oraccept V(m: in Integer); do s := s + m; end V;orwhen s = 0 => accept Z;while Z'count > 0 loopaccept Z;end loop;oraccept nP(m: in Integer; b: out Boolean) dob := m

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!