Введение

В информатике модель акторов и исчисления процессов — два тесно связанных подхода к моделированию конкурентных цифровых вычислений. См. модель акторов и историю исчислений процессов. Между этими двумя подходами много общего, но есть и несколько различий (как философских, так и технических): существует только одна модель акторов (хотя она имеет множество формальных систем для проектирования, анализа, верификации, моделирования и т. д.); существует множество исчислений процессов, разработанных для рассуждений о различных видах конкурентных систем на разных уровнях детализации (включая исчисления, включающие время, стохастические переходы или конструкции, специфичные для областей применения, таких как анализ безопасности). Модель акторов вдохновлена законами физики и опирается на них для своих фундаментальных аксиом, то есть физических законов (см. Теория модели акторов); исчисления процессов изначально были вдохновлены алгеброй. Процессы в исчислениях процессов анонимны и взаимодействуют путем отправки сообщений либо через именованные каналы (синхронные или асинхронные), либо через амбиенты (которые также могут использоваться для моделирования коммуникаций, подобных каналам). В отличие от этого, акторы в модели акторов обладают идентификатором и взаимодействуют, отправляя сообщения по адресам других акторов (этот стиль взаимодействия также может использоваться для моделирования коммуникаций, подобных каналам — см. ниже). Публикации по модели акторов и исчислениям процессов содержат значительное количество перекрестных ссылок, благодарностей и взаимных цитирований (см. историю модели акторов и исчислений процессов).

Как работают каналы

Косвенная коммуникация с использованием каналов (например, как описано Гиллзом Каном и Дэвидом МакКуином в [1977]) является важной проблемой для коммуникации в параллельных и конкурентных вычислениях, влияющей как на семантику, так и на производительность. Некоторые исчисления процессов отличаются от модели акторов тем, что используют каналы вместо прямой коммуникации.

Синхронные каналы

Синхронные каналы обладают тем свойством, что отправитель, поместивший сообщение в канал, должен ждать, пока получатель не извлечет это сообщение из канала, прежде чем он сможет продолжить работу.

Простые синхронные каналы

Синхронный канал может быть смоделирован актором, который принимает сообщения для отправки (put) и получения (get). Ниже приведено описание поведения актора для простого синхронного канала:
Каждое сообщение, отправляемое через put, содержит данные и адрес, на который отправляется подтверждение после того, как сообщение будет получено через get в порядке FIFO. Каждое сообщение get содержит адрес, на который отправляются полученные данные.

Эффективность

Как отмечалось в работе Кнабе [1992], проблемой вышеописанного протокола (простой распределенный протокол) является большое количество сообщений, необходимых для выполнения процедуры согласования перед отправкой сообщения по синхронному каналу. Действительно, как показано в предыдущем разделе (Livelock), число этих сообщений может быть неограниченным.

Асинхронные каналы

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

Простые асинхронные каналы

Асинхронный канал может быть смоделирован актором, который принимает сообщения "положить" (put) и "взять" (get). Ниже приведено поведение актора для простого асинхронного канала:
Каждое сообщение "положить" содержит данные и адрес, на который немедленно отправляется подтверждение (без ожидания, пока сообщение будет получено сообщением "взять"). Каждое сообщение "взять" содержит адрес, на который отправляются полученные данные.

Асинхронные каналы в процессе вычислений

Язык программирования Join calculus (опубликован в 1996 году) реализовал локальные и распределённые параллельные вычисления. Он включал асинхронные каналы, а также разновидность синхронного канала, используемого для вызова процедур. Aπ Actor calculus Агхи основан на типизированной версии асинхронного π-исчисления.

Алгебры

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

Денотационная семантика

Уилл Клингер (основываясь на работах Айрин Грейф [1975], Гордона Плоткина [1976], Генри Бейкера [1978], Майкла Смита [1978] и Франца, Хоара, Леманна и де Ровера [1979]) опубликовал первую удовлетворительную математическую денотационную теорию модели акторов, используя теорию областей в своей диссертации в 1981 году. Его семантика противопоставляет неограниченный недетерминизм модели акторов ограниченному недетерминизму CSP [Hoare 1978] и параллельных процессов [Milne and Milner 1979] (см. денотационную семантику). Роско [2005] разработал денотационную семантику с неограниченным недетерминизмом для последующей версии Communicating Sequential Processes Хоара [1985]. В последнее время Карл Хьюитт [2006b] разработал денотационную семантику для акторов, основанную на временных диаграммах. Уго Монтанари и Кэролин Талкотт [1998] внесли вклад в попытки согласовать акторов с исчислением процессов.