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.3 Implementacja monitora ograniczonegoRolę kolejki procesów czekających na warunek spełnia kolejka procesów czekającychw wejściu WAIT. W związku z tym, jeżeli żaden proces nie czeka na spotkanie w wejściuWAIT, to można zaakceptować spotkanie w wejściu SIGNAL bez dalszych konsekwencji.Będzie to sygnał wysłany „w powietrze". Jeśli natomiast jakiś proces czeka na spotkanie wWAIT, to również można zaakceptować spotkanie w wejściu SIGNAL, ale podczas tegospotkania proces CONDITION musi zrealizować także spotkanie w wejściu WAIT. Atrybutcount wejścia WAIT służy do stwierdzenia, ile procesów oczekuje na spełnienie warunku.task CONDITION isentry WAIT;entry SIGNAL;entry EMPTY(b: out Boolean);end;task body CONDITION isbeginloopselectwhen WAIT'count = 0 =>accept SIGNAL;orwhen WAIT'count > 0 =>accept SIGNAL doaccept WAIT;end SIGNAL;oraccept EMPTY(b: out Boolean) dob := WAIT'count = 0;end EMPTY;end select;end loop;end CONDITION;6.4.4 Zasoby dwóch typówWejście PRZYDZIELljest bezparametrowe, bo zawsze jest przydzielany zasób typu A.Wejście PRZYDZIEL2 ma jeden parametr określający typ przydzielonego zasobu. WejściePRZYDZIEL3 ma dwa parametry wyjściowe. Pierwszy określa, czy zasób przydzielono, drugipodaje typ przydzielonego zasobu.M: constant Integer := ?; — liczba zasobów typu AN: constant Integer := ?; -- liczba zasobów typu Btask MON isentry PRZYDZIELI;entry PRZYDZIEL2(typ: out A..B);entry PRZYDZIEL3(typ: out A..B; dostał: out Boolean);entry ZWALNIAM(typ: in A..B);end;task body MON iswolneA: Integer := M;wolneB: Integer := N;beginloop174

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

Saved successfully!

Ooh no, something went wrong!