Что такое актерская модель в контексте языка программирования? - PullRequest
8 голосов
/ 21 марта 2009

Я встречал упоминание в нескольких местах в таких контекстах, как модель актера Эрланга, актеры Groovy, модель актера Scala и т. Д. К чему это относится?

Ответы [ 3 ]

3 голосов
/ 21 марта 2009

Я думаю Википедия лучше всего подводит итог:

Модель актера принимает философию, согласно которой все является актером. Это похоже на все, что является объектной философией, используемой некоторыми объектно-ориентированными языками программирования, но отличается тем, что объектно-ориентированное программное обеспечение обычно выполняется последовательно, в то время как модель Actor по своей сути является параллельной. [snip] Модель Actor о семантике передачи сообщений.

1 голос
/ 04 октября 2017

Некоторое время назад я написал в этом блоге , в котором объясняются основные понятия модели и строится базовая реализация с использованием JavaScript. Из поста:

В модели актера актер является основой, на которой вы строите структуру своего приложения, он имеет внутреннее состояние, невидимое для внешнего мира, и взаимодействует с другими субъектами посредством асинхронных сообщений.

Если это звучит очень похоже на объектно-ориентированное программирование (ООП), вы правы. Модель актора может рассматриваться как ООП со специальной обработкой сообщений: они доставляются асинхронно и синхронно выполняются получателем.

Каждый актер идентифицируется по уникальному адресу, по которому вы отправляете ему сообщения. Когда сообщение обрабатывается, оно сопоставляется с текущим поведением субъекта; которая является не чем иным, как функцией, которая определяет действия, которые необходимо предпринять в ответ на сообщение. В ответ на сообщение актер может:

  • Создайте больше актеров.
  • Отправка сообщений другим актерам.
  • Назначение внутреннего состояния для обработки следующего сообщения.
0 голосов
/ 23 мая 2019

Модель актера Основная идея состоит в том, чтобы управлять акторами как примитивами для параллельных вычислений. Актер может отправлять сообщения другим актерам, получать и реагировать на сообщения и порождать новых актеров.

Ключевая идея заключается в том, чтобы обмениваться сообщениями, а не делить память между разными потоками.

Важно добавить, что субъекты асинхронны и одновременны , но они не гарантируют порядок сообщений или ограничение по времени относительно того, когда сообщение может быть обработано следовательно, атомарные транзакции не могут быть разделены на актеров).

Использование модели Actor подходит в двух основных случаях:

  • Когда можно разложить ваше решение на множество независимых задач.
  • Когда вы можете разложить свое решение на набор задач, связанных очистить рабочий процесс.

Иллюстрация:

enter image description here

...