Модель акторов
Модель акторов — модель параллельных вычислений, в которой актор рассматривается как основной строительный блок. Для модели акторов присуще следующее:
- Появляется актор — некая программная сущность, которая живёт как бы сама по себе (сильно изолирована). Актор имеет своё собственное состояние, изолированное от других; акторы не имеют общих ресурсов.
- Взаимодействие между акторами реализуется через сообщения — передаваемую друг другу информацию.
- Пересылаемые сообщения отделены от акторов, для взаимодействия с сообщениями существуют специальные почтовые ящики.
- Чтобы отправить сообщение другому актору, необходимо и достаточно знать адрес (уникальное имя) другого актора. Адрес (имя) можно узнать или самому создав актора, или получив адрес (имя) в сообщении.
- Ограничений на порядок прибытия сообщений нет. Однако в Эрланге есть всё-такие кое-какое ограничение: если взять только общение двух акторов между собой, то сообщения от одного к другому будут приходить точно в той же последовательности, что и были посланы.
- Один актор может породить другого актора, тот — третьего и т.д. Нет никакой гарантии, что при очередном запуске программы сеть из акторов будет иметь такой же вид, что и прежде. Может быть так, например, что при первом запуске акторы выстроятся линейно, при втором будет древовидная топология, при третьем — кольцевая.
- Создание и уничтожение акторов — лёгкая операция. Актор, если ему угодно, может сам себя завершить.
- Обработка ошибок нелокальна (не сам актор обрабатывает ошибку в себе, а другой). Акторы делают то, что должны делать, или терпят неудачу.
В Эрланге модель акторов поддерживается “из коробки”, максимально просто и удобно. Спаунить акторов максимально просто. В сообщениях от актора к актору можно наравне с другими термами передавать пиды. Состояние актора удобно хранить в виде ETS/DETS-таблицы. В случае с DETS несколько акторов могут получить к ней доступ. Это ещё один способ обмениваться информацией.
Изначально Эрланг разрабатывался под влиянием модели CSP Тони Хоара, а не модели акторов. В официальной документации по Эрлангу слово “актор” не употребляется. Используется “процесс”. Но чтобы не путать процессы внутри виртуальной машины и процессы операционки, многие используют термин “актор”. Что касается модели CSP, в ней не сразу, но тоже был заложен принцип неограниченного недетерминизма, присущий для модели акторов.
Автор модели акторов — Карл Хьюитт (1944 — 2022).
© Алексей Карманов, 2024.