12.07.2015 Views

Spis treœci - Patrz

Spis treœci - Patrz

Spis treœci - Patrz

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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

... W.Wait...end;procedure *P2;begin... W.Signal...end;beginz := Oend; {M}W odróżnieniu od języka Concurrent Pascal instancje monitora są inicjowane automatycznie.Opis Pascala Plus można znaleźć w książce [BuEW88].4.1.6 Modula 2Zaprojektował ją Wirth jako rozszerzenie języka Pascal o pojęcie modułu, który wModuli jest podstawową jednostką programową. Modni zawiera deklaracje typów, zmiennych,stałych i procedur oraz ciąg instrukcji, które są wykonywane w chwili wywołania proceduryzawierającej dany moduł. Instrukcje te służą do nadawania wartości początkowych zmiennymlokalnym. Moduł może udostępniać na zewnątrz obiekty w nim zadeklarowane (zwłaszczaprocedury) — muszą się one pojawić na liście EXPORT. Można w nim także odwoływać się doobiektów zadeklarowanych w innych modułach — muszą one wówczas być wymienione naliście IMPORT.Standardowy moduł Processes umożliwia korzystanie z procesów współbieżnych.Udostępnia procedurę do tworzenia i uruchamiania nowego procesu oraz specjalny typSIGNAL (który pełni rolę omówionego wcześniej typu condition) i operacje na nim. Dlazmiennej S typu SIGNAL procedura SEND(S) odpowiada operacji signal(S), proceduraWAIT(S) — operacji w«z((S), funkcja logiczna Awaited(S) — funkcji empty(S). Dodatkowowprowadzono procedurę Init(S) do inicjowania zmiennej S.Jak widać pojęcie modułu jest bardzo zbliżone do omawianego już pojęcia monitora.Monitor uzyskuje się w Moduli 2 jako szczególny przypadek modułu wykorzystując możliwośćnadawania modułom priorytetów. Moduł o najwyższym priorytecie ma bowiem tę własność, żewykonanie eksportowanej przez niego procedury nie może być przerwane przez żaden innyproces. Mamy więc w ten sposób spełniony warunek wzajemnego wykluczania się procedurmonitorowych.Nasz przykładowy monitor M ma w Moduli 2 następującą postać:MODULE M[l];EKPORT P1.P2;IMPORT SIGNAL,SEND.WAIT,Init;VAR z: INTEGER; W: SIGNAL;PROCEDURĘ Pl;BEGIN...WAIT(W)...END;PROCEDURĘ P2;BEGIN...SIGNAL(W)...END;BEGIN65

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

Saved successfully!

Ooh no, something went wrong!