Programowanie współbieżne i rozproszone/PWR Wykład 4: Różnice pomiędzy wersjami
Linia 6: | Linia 6: | ||
== Spotkania (randki) w Adzie == | == Spotkania (randki) w Adzie == | ||
Mechanizm synchronizacyjny udostępniany przez Adę to tzw. ''spotkania'' albo ''randki''. W spotkaniu uczestniczą dwa (lub więcej) procesy, które w Adzie noszą nazwę ''zadań''. Zacznijmy od omówienia randki między dwoma zadaniami. | |||
=== Zadanie aktywne i pasywne === | === Zadanie aktywne i pasywne === | ||
Spośród zadań uczestniczących w randce jedno jest zadaniem ''aktywnym'' a drugie ''zadaniem pasywnym''. Zadanie ''aktywne'' inicjuje randkę, ale w czasie jej trwania nie robi nic. Zadanie ''pasywne'' jest zadaniem, które udostępnia pewne ''wejścia''. Wejścia te mogą być wywoływane przez zadanie aktywne, które chce zainicjować randkę. Gdy dojdzie do randki, zadanie pasywne zajmuje się jej obsługą, wykonując określony fragment programu, podczas gdy zadanie aktywne jest wstrzymywane w oczekiwaniu na zakończenie randki. | |||
Zadania w Adzie składają się z dwóch części. Pierwsza część to tzw. ''specyfikacja zadania''. Specyfikacja określa jakie wejścia są udostępniane przez zadanie i jakie są ich argumenty. | |||
Właściwa treść zadania jest określona w osobnym fragmencie kodu. | |||
Zacznijmy zatem od specyfikacji zadania. | |||
=== Wejścia === | === Wejścia === | ||
Każde zadanie może udostępniać na zewnątrz pewne wejścia. Są to jakby "procedury", które mogą być wywołane przez inne zadania i realizowane "w ich imieniu" przez zadanie bierne. Każde wejście ma nazwę i, jeśli jest taka potrzeba, parametry. | |||
=== Semantyka randki === | === Semantyka randki === |
Wersja z 13:35, 20 cze 2006
Komunikacja synchroniczna
Przypomnijmy podstawowe cechy komunikacji synchronicznej. Procesy synchronizują ze sobą: nadawca czeka z wysłaniem do momentu aż odbiorca będzie gotowy do odbioru i na odwrót: odbiorca jest wstrzymywany na instrukcji odbioru do chwili aż sterowanie w nadawcy dojdzie do instrukcji wysłania.
Czasem trudno jest jednak wprowadzić jednoznaczne rozgraniczenie na proces nadający i odbierający, gdyż w czasie pojedynczej synchronizacji procesów może dojść do wymiany komunikatów w obie strony. Tak właśnie dzieje się to w Adzie.
Spotkania (randki) w Adzie
Mechanizm synchronizacyjny udostępniany przez Adę to tzw. spotkania albo randki. W spotkaniu uczestniczą dwa (lub więcej) procesy, które w Adzie noszą nazwę zadań. Zacznijmy od omówienia randki między dwoma zadaniami.
Zadanie aktywne i pasywne
Spośród zadań uczestniczących w randce jedno jest zadaniem aktywnym a drugie zadaniem pasywnym. Zadanie aktywne inicjuje randkę, ale w czasie jej trwania nie robi nic. Zadanie pasywne jest zadaniem, które udostępnia pewne wejścia. Wejścia te mogą być wywoływane przez zadanie aktywne, które chce zainicjować randkę. Gdy dojdzie do randki, zadanie pasywne zajmuje się jej obsługą, wykonując określony fragment programu, podczas gdy zadanie aktywne jest wstrzymywane w oczekiwaniu na zakończenie randki.
Zadania w Adzie składają się z dwóch części. Pierwsza część to tzw. specyfikacja zadania. Specyfikacja określa jakie wejścia są udostępniane przez zadanie i jakie są ich argumenty. Właściwa treść zadania jest określona w osobnym fragmencie kodu.
Zacznijmy zatem od specyfikacji zadania.
Wejścia
Każde zadanie może udostępniać na zewnątrz pewne wejścia. Są to jakby "procedury", które mogą być wywołane przez inne zadania i realizowane "w ich imieniu" przez zadanie bierne. Każde wejście ma nazwę i, jeśli jest taka potrzeba, parametry.