Programowanie współbieżne i rozproszone/PWR Ćwiczenia Linda

Z Studia Informatyczne
Wersja z dnia 11:17, 16 paź 2006 autorstwa Mengel (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Zasoby dwóch typów

Rozwiązanie pierwsze

Rozwiązanie drugie

Synchronizacja grupowa

Treść tego zadania przedstawimy w formie anegdoty. Z zespołu boisk korzysta N>0 drużyn. Każda drużyna składa się z K>1 zawodników, przy czym zawodnik jest na stałe przypisany do konkretnej drużyny. Każdy zawodnik cyklicznie (tj. w pętli nieskończonej):

  • załatwia własne sprawy,
  • udaje się na boisko,
  • oczekuje aż zbierze się jego drużyna,
  • oczekuje aż zbierze się jakaś inna drużyna,
  • rozgrywa mecz.

Po przyjściu na boisko zawodnik oczekuje na przyjście wszystkich zawodników z jego drużyny oraz na skompletowanie się innej drużyny. Gdy tylko są dwie kompletne drużyny rozpoczyna się mecz. Każdy zawodnich z tych drużyn wywołuje wówczas predefiniowaną procedurę mecz (z_kim: 1..N), gdzie z_kim jest numerem drużyny przeciwnej. Zawodnik może w każdej chwili zejść z boiska (zakończyć wykonanie procedury mecz). Pozostali zawodnicy kontynuują wówczas grę, nawet jeśli na boisku pozostanie tylko jeden zawodnik. Zawodnik, który zakończył grę nie może jednak wrócić na boisko, tzn. aby ponownie rozpocząć mecz musi najpierw poczekać aż ponownie zbiorą się wszyscy gracze jego drużyny oraz pewna drużyna przeciwna. Zakładamy, że boisk jest co najmniej N/2. Zapisz w Lindzie treść procesu Zawodnik (dr: 1..N)

Sortowanie

Zapisz w Lindzie algorytm sortowania N>0 liczb naturalnych. Załóż, że początkowo proces Inicjator umieszcza w przestrzeni N ponumerowanych liczb naturalnych, korzystając z predefiniowanej funkcji losuj przekazującej w wyniku liczby naturalne z przedziału [1,n]. Sortowanie wykonywane jest przez K>0 procesów, z których każdy w kolejnym cyklu dokonuje jednego porównania i w razie potrzeby zamienia ich kolejność.