Составители:
Рубрика:
LIGHT=green --> red --> LIGHT
Для описания взаимодействия процессов друг с другом исполь-
зуются каналы.
Пример 3.
COPY1=West?c:char --> East!c --> COPY1
# копирование по символу
Пример 4. Программа вычисления НОД:
GCD=Input?id, x, y --> GCD(id, x, y)
GCD(id, x, y)= if (x=y) then
Output!id, x --> GCD
else if (x>y) then
GCD(id, x-y, y)
else
GCD(id, x, y-x)
Здесь используются два взаимно-рекурсивных процесса. Пер-
вый GCD ждет события ввода и вызывает второй процесс GCD().
Второй процесс повторяется до выполнения условия x=y, затем вы-
водит результат и запускает первый процесс для ожидания еще од-
ного события ввода.
Пример 5. Следующая программа определяет поведение систе-
мы, буферизующей один или два символа.
COPY=West?c1:char --> COPY2(c1)
COPY2(c1)=West?c2:char --> East!c1 --> COPY2(c2)
[ ]
East!c1 --> West?c1:char --> COPY2(c2)
Второй процесс использует оператор защищенного выбора [ ]:
– защита в первой части ждет ввода из канала West;
– защита во второй части ждет вывода из канала East.
Выбор недетерминирован: возможны оба взаимодействия.
191
Страницы
- « первая
- ‹ предыдущая
- …
- 188
- 189
- 190
- 191
- 192
- …
- следующая ›
- последняя »