5.3 Резиденты
Резидентом называется специальная активная сущность, отслеживающая
состояния некоторых (целевых) процессов и передающая собранную информацию своему
владельцу. Резиденты создаются в результате доказательства конструкторов резидентов.
В общем случае, каждому резиденту соответствуют:
1.Процесс, являющийся «владельцем» резидента.
2.Атомарная формула (вызов функции), заданная в конструкторе резидента.
3.Некоторые «целевые» миры резидента. Процессы, в состав которых входят целевые миры резидента, называются «целевыми» процессами резидента.
4.Некоторые переменные, являющиеся общими для резидента и его владельца.
Владельцем (создателем) резидента является процесс,
одному из слотов миров которого соответствовал инициализатор — конструктор
рассматриваемого резидента. Резидент взаимодействует со своим владельцем как
некоторый процесс — с помощью переключающих потоковых сообщений, по правилам
передачи потоковых сообщений.
Целевыми мирами резидента считаются все экземпляры классов,
входящие в состав значения целевого параметра в текущий момент времени — набор
целевых миров может изменяться в ходе исполнения программы. Если вместо целевого
параметра в конструкторе резидента задан конструктор мира, целевым параметром
считается экземпляр класса, построенный в результате доказательства этого конструктора
мира. Если целевой параметр или заменяющий его конструктор мира в конструкторе
резидента не заданы, целевым параметром считается предопределённый атрибут self.
Резидент решает следующие задачи и осуществляет следующие действия:
1.Построение множества списков, соответствующих различным
целевым мирам резидента. Каждый такой список должен содержать все значения,
возвращаемые в результате исполнения вызова функции (заданного в составе
конструктора резидента) в рассматриваемом целевом мире.
2.Передача построенного множества списков владельцу
резидента в составе (переключающего) потокового сообщения через защищающий порт
резидента. В качестве потокового сообщения передаётся текущее значение целевого
параметра в конструкторе резидента, в котором все целевые экземпляры классов заменены
соответствующими им списками значений функции.
В случае если некоторые списки ещё не построены, или если
некоторые целевые процессы находятся в состоянии «неиспользуемый», «неудачный»,
«объявленный» или «сформированный», а также если в составе значения целевого параметра
вместо некоторых миров присутствуют несвязанные переменные, вместо соответствующих
списков значений функции в составе потокового сообщения передаются спейсеры #.
3.Постоянное слежение за состояниями целевых процессов.
Повторное построение и передача списков значений функции после каждой фазы исполнения
целевого процесса.
4.Приём новых значений через простые порты
при изменении соответствующих общих переменных. Повторное построение
и передача списков значений функции при получении новых значений через простые порты.
Вычисление значений функции в целевом мире допускается лишь
в том случае, если целевой процесс уже обработал все полученные им потоковые сообщения,
и, следовательно, не имеет несогласованных портов.
Перед началом вычисления значений функции осуществляется
активизация некоторых портов целевого процесса в соответствии с правилами обработки
прямых сообщений
Для вычисления значений функции в целевом мире (временно)
создаётся и доказывается с откатом актор Q. В случае если доказательство актора Q
завершается исключительной ситуацией, (недостроенный) список значений функции теряется,
и резидент осуществляет повторную попытку построить список значений функции.
Перед отправлением построенного списка значений функции
осуществляется его упорядочение и сокращение с помощью удаления повторных элементов.
В конкретной реализации языка должны быть заданы однозначные правила упорядочения
термов (значений функций).
Примечание. Повторное построение списков значений функции резидента разрешается не производить в тех случаях,
когда повторное исполнение функции не приведёт к получению новых значений.
Примечание. Рекомендуемые графические обозначения резидентов:
а) Резидент, которому соответствует один целевой мир.

б) Резидент, которому соответствуют несколько целевых миров.

Содержание