клиентский процесс, ее вызвавший, могут продолжать работу. (см.
рис. 9).
Рис. 9. Работа процесса-сервера и процесса-клиента
Ранее приведенный оператор ввода выполн яет одну операцию.
Однако, защищенное взаимодействие позволяет иметь несколько
условий
in op_1(параметры) and B_1 by e_1 --> S_1;
[ ] . . .
[ ] op_n(параметры) and B_n by e_n --> S_n;
ni
Каждая ветвь является защищенной операцией. Часть кода
перед символом --> называется защитой. Символы S_i служат
для обозначения последовательностей операторов. Выражение
and B_i называется условием синхронизации, а выражение e_i на-
зывается условием планирования.
Говорят, что защита в операторе ввода пропускает, если бы-
ла вызвана операция и соответствующее условие синхронизации
истинно (или его нет). Условие синхронизации может зависеть от
значений параметров (т. к. их область видимости включает всю за-
щищенную операцию), так что один вызов может привести к тому,
что защита пропустит, а в другом случае — не пропустит.
Выполнение in приостанавливает работу процесса, пока какая-
нибудь защита, наконец, пропустит.
Если несколько защит пропускает, то (при отсутствии условий
планирования) оператор обслуживает первый по времени вызов,
пропуская через одну из ветвей, причем выбор срабатывающей вет-
ви стандартом не определяется (фактически, ее выбор определя-
ется конфигурированием системы; допуская очевидную вольность
формулировок, говорят, что ветвь выбирается недетерминировано).
Выражение планирования используется для изменен ия порядка
83