stringtranslate.com

Модель актера

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

Модель акторов возникла в 1973 году. [1] Она использовалась как в качестве основы для теоретического понимания вычислений , так и в качестве теоретической основы для нескольких практических реализаций параллельных систем . Связь модели с другой работой обсуждается в модели акторов и исчислениях процессов .

История

По словам Карла Хьюитта , в отличие от предыдущих моделей вычислений, модель акторов была вдохновлена ​​физикой , включая общую теорию относительности и квантовую механику . [ требуется ссылка ] На нее также повлияли языки программирования Lisp , Simula , ранние версии Smalltalk , системы на основе возможностей и коммутация пакетов . Ее разработка была «мотивирована перспективой высокопараллельных вычислительных машин, состоящих из десятков, сотен или даже тысяч независимых микропроцессоров, каждый со своей локальной памятью и коммуникационным процессором, взаимодействующих через высокопроизводительную коммуникационную сеть». [2] С тех пор появление массового параллелизма посредством многоядерных и многоядерных компьютерных архитектур возродило интерес к модели акторов.

После публикации Хьюитта, Бишопа и Штайгера в 1973 году Ирен Грейф разработала операционную семантику для модели акторов в рамках своего докторского исследования. [3] Два года спустя Генри Бейкер и Хьюитт опубликовали набор аксиоматических законов для систем акторов. [4] [5] Другие важные вехи включают диссертацию Уильяма Клингера 1981 года, в которой была представлена ​​денотационная семантика, основанная на доменах власти [2], и диссертацию Гула Аги 1985 года, в которой была дополнительно разработана семантическая модель на основе переходов, дополнительная к модели Клингера. [6] Это привело к полной разработке теории модели акторов .

Основная работа по внедрению программного обеспечения была проделана Рассом Аткинсоном, Джузеппе Аттарди, Генри Бейкером, Джерри Барбером, Питером Бишопом, Питером де Йонгом, Кеном Каном, Генри Либерманом, Карлом Мэннингом, Томом Рейнхардтом, Ричардом Штайгером и Дэном Терио в группе Message Passing Semantics Group Массачусетского технологического института (MIT). Исследовательские группы под руководством Чака Сейтца в Калифорнийском технологическом институте (Caltech) и Билла Далли в MIT построили компьютерные архитектуры, которые дополнительно развили передачу сообщений в модели. См. Реализация модели акторов .

Исследования модели актора проводились в Калифорнийском технологическом институте , Лаборатории Токоро Киотского университета , Корпорации микроэлектроники и компьютерных технологий (MCC), Лаборатории искусственного интеллекта Массачусетского технологического института , SRI , Стэнфордском университете , Иллинойсском университете в Урбане-Шампейне [ 7] , Университете Пьера и Марии Кюри (Университет Париж 6), Пизанском университете , Лаборатории Ёнэдзава Токийского университета , Centrum Wiskunde & Informatica (CWI) и других местах.

Фундаментальные концепции

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

Актор — это вычислительная сущность, которая в ответ на полученное сообщение может одновременно:

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

Разделение отправителя и отправляемых сообщений стало фундаментальным достижением модели актора, позволяющим использовать асинхронную коммуникацию и структуры управления в качестве шаблонов передачи сообщений . [8]

Получатели сообщений идентифицируются по адресу, иногда называемому «почтовым адресом». Таким образом, актор может общаться только с теми акторами, чьи адреса у него есть. Он может получить их из сообщения, которое он получает, или, если адрес принадлежит актору, которого он сам создал.

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

Формальные системы

За прошедшие годы было разработано несколько различных формальных систем, которые позволяют рассуждать о системах в модели акторов. К ним относятся:

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

Приложения

Модель актора может использоваться в качестве основы для моделирования, понимания и рассуждений о широком спектре параллельных систем . [15] Например:

Семантика передачи сообщений

Модель актора касается семантики передачи сообщений .

Спор о неограниченном недетерминизме

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

В начале 1960-х годов прерывания начали использоваться для имитации одновременного выполнения нескольких программ на одном процессоре. [17] Наличие параллелизма с общей памятью породило проблему управления параллелизмом . Первоначально эта проблема была задумана как проблема взаимного исключения на одном компьютере. Эдсгер Дейкстра разработал семафоры , а позднее, между 1971 и 1973 годами, [18] Тони Хоар [19] и Пер Бринч Хансен [20] разработали мониторы для решения проблемы взаимного исключения. Однако ни одно из этих решений не предоставляло конструкцию языка программирования, которая инкапсулировала бы доступ к общим ресурсам. Эта инкапсуляция была позже достигнута конструкцией сериализатора ([Hewitt and Atkinson 1977, 1979] и [Atkinson 1980]).

Первые модели вычислений ( например , машины Тьюринга , постановки Поста, лямбда-исчисление и т . д. ) были основаны на математике и использовали глобальное состояние для представления вычислительного шага (позже обобщенного в [McCarthy and Hayes 1969] и [Dijkstra 1976] см. Упорядочение событий в сравнении с глобальным состоянием ). Каждый вычислительный шаг был от одного глобального состояния вычисления к следующему глобальному состоянию. Подход глобального состояния был продолжен в теории автоматов для конечных автоматов и стековых машин push down , включая их недетерминированные версии. Такие недетерминированные автоматы обладают свойством ограниченного недетерминизма ; то есть, если машина всегда останавливается при запуске в своем начальном состоянии, то существует ограничение на количество состояний, в которых она останавливается.

Эдсгер Дейкстра далее развил недетерминированный подход глобального состояния. Модель Дейкстры породила спор относительно неограниченного недетерминизма (также называемого неограниченной неопределенностью ), свойства параллелизма , при котором величина задержки в обслуживании запроса может стать неограниченной в результате арбитража конкуренции за общие ресурсы, при этом по-прежнему гарантируя, что запрос в конечном итоге будет обслужен . Хьюитт утверждал, что модель актора должна предоставлять гарантию обслуживания. В модели Дейкстры, хотя между выполнением последовательных инструкций на компьютере может быть неограниченное количество времени, (параллельная) программа, которая началась в четко определенном состоянии, могла завершиться только в ограниченном количестве состояний [Dijkstra 1976]. Следовательно, его модель не могла предоставить гарантию обслуживания. Дейкстра утверждал, что невозможно реализовать неограниченный недетерминизм.

Хьюитт утверждал иначе: не существует предела тому, сколько времени требуется вычислительной схеме, называемой арбитром, для установления состояния (см. метастабильность (электроника) ). [21] Арбитры используются в компьютерах для решения проблемы, когда компьютерные часы работают асинхронно по отношению к внешнему вводу, например , вводу с клавиатуры, доступу к диску, сетевому вводу и т. д. Таким образом, для получения сообщения, отправленного на компьютер, может потребоваться неограниченное время, и в то же время компьютер может пройти неограниченное количество состояний.

Модель актора характеризуется неограниченным недетерминизмом, который был отражен в математической модели Уилла Клингера с использованием теории доменов . [2] В модели актора нет глобального состояния. [ сомнительнообсудить ]

Прямая коммуникация и асинхронность

Сообщения в модели актора не обязательно буферизуются. Это был резкий разрыв с предыдущими подходами к моделям параллельных вычислений. Отсутствие буферизации вызвало много недоразумений во время разработки модели актора и до сих пор является спорным вопросом. Некоторые исследователи утверждали, что сообщения буферизуются в «эфире» или «среде». Кроме того, сообщения в модели актора просто отправляются (как пакеты в IP ); нет необходимости в синхронном рукопожатии с получателем.

Создание акторов плюс адреса в сообщениях означают переменную топологию

Естественным развитием модели актора стало разрешение адресов в сообщениях. Под влиянием сетей с коммутацией пакетов [1961 и 1964] Хьюитт предложил разработать новую модель параллельных вычислений, в которой сообщения не имели бы никаких обязательных полей вообще: они могли бы быть пустыми. Конечно, если бы отправитель сообщения хотел, чтобы получатель имел доступ к адресам, которых у получателя еще нет, адрес должен был бы быть отправлен в сообщении.

Например, актору может потребоваться отправить сообщение актору-получателю, от которого он позже ожидает получить ответ, но ответ фактически будет обработан третьим компонентом актора, который был настроен на получение и обработку ответа (например, другим актором, реализующим шаблон наблюдателя ). Исходный актор может сделать это, отправив сообщение, которое включает сообщение, которое он хочет отправить, вместе с адресом третьего актора, который будет обрабатывать ответ. Этот третий актор, который будет обрабатывать ответ, называется возобновлением ( иногда также называется продолжением или стековым кадром ). Когда актор-получатель готов отправить ответ, он отправляет ответное сообщение на адрес актора возобновления , который был включен в исходное сообщение.

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

По сути своей параллельный

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

Нет требований к порядку прибытия сообщений

Хьюитт выступил против добавления требования, чтобы сообщения приходили в том порядке, в котором они отправляются актору. Если требуется упорядочение выходных сообщений, то его можно смоделировать с помощью актора очереди, который предоставляет эту функциональность. Такой актор очереди будет ставить в очередь пришедшие сообщения, чтобы их можно было извлечь в порядке FIFO . Таким образом, если актор Xотправил сообщение M1актору Y, а затем Xотправил другое сообщение M2, Yнет требования, что M1прибывает Yдо M2.

В этом отношении модель актора отражает системы коммутации пакетов , которые не гарантируют, что пакеты должны быть получены в том же порядке, в котором они были отправлены. Отсутствие гарантии порядка доставки позволяет коммутации пакетов буферизировать пакеты, использовать несколько путей для отправки пакетов, повторно отправлять поврежденные пакеты и обеспечивать другие оптимизации.

Для большего примера, акторам разрешено конвейеризировать обработку сообщений. Это означает, что в ходе обработки сообщения M1актор может назначить поведение, которое будет использоваться для обработки следующего сообщения, а затем фактически начать обработку другого сообщения M2до того, как оно завершит обработку M1. То, что актору разрешено конвейеризировать обработку сообщений, не означает, что он должен конвейеризировать обработку. Является ли сообщение конвейерным — это инженерный компромисс. Как внешний наблюдатель узнает, была ли обработка сообщения актором конвейеризирована? В определении актора нет двусмысленности, созданной возможностью конвейеризации. Конечно, в некоторых реализациях можно выполнить оптимизацию конвейера неправильно, и в этом случае может возникнуть непредвиденное поведение.

Местность

Еще одной важной характеристикой модели актора является локальность.

Локальность означает, что при обработке сообщения актор может отправлять сообщения только на адреса, которые он получает в сообщении, адреса, которые у него уже были до получения сообщения, и адреса для акторов, которые он создает во время обработки сообщения. (Но см. Синтез адресов акторов.)

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

Составление систем акторов

Идея объединения систем акторов в более крупные системы является важным аспектом модульности , который был разработан в докторской диссертации Гул Аги [6] и позднее развит Гул Агой, Яном Мейсоном, Скоттом Смитом и Кэролин Талкотт [9] .

Поведение

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

Поведения также освободили модель актора от деталей реализации, например , интерпретатора потока токенов Smalltalk-72. Однако эффективная реализация систем, описанных моделью актора, требует обширной оптимизации. Подробности см. в разделе Реализация модели актора .

Моделирование других систем параллельной обработки

Другие системы параллелизма ( например , исчисление процессов ) могут быть смоделированы в модели актора с использованием двухфазного протокола фиксации . [22]

Теорема о вычислительном представлении

В модели актора существует теорема о вычислительном представлении для систем, которые закрыты в том смысле, что они не получают сообщений извне. Математическое обозначение, обозначенное закрытой системой , строится из начального поведения и функции, аппроксимирующей поведение. Они получают все более и более хорошие аппроксимации и строят обозначение (смысл) для следующим образом [Hewitt 2008; Clinger 1981]:

Таким образом, может быть математически охарактеризовано в терминах всех его возможных поведений (включая те, которые связаны с неограниченным недетерминизмом). Хотя это не реализация , его можно использовать для доказательства обобщения тезиса Чёрча-Тьюринга-Россера-Клина [Kleene 1943]:

Следствием вышеприведенной теоремы является то, что конечный субъект может недетерминированно отреагировать несчетным [ уточнить ] числом различных выходов.

Связь с логическим программированием

Одной из основных мотиваций для разработки модели актора было понимание и решение проблем структуры управления, которые возникли при разработке языка программирования Planner . [ требуется ссылка ] После того, как модель актора была изначально определена, важной задачей стало понимание мощности модели относительно тезиса Роберта Ковальски о том, что «вычисление может быть включено в дедукцию». Хьюитт утверждал, что тезис Ковальски оказался ложным для параллельных вычислений в модели актора (см. Неопределенность в параллельных вычислениях ).

Тем не менее, были предприняты попытки расширить логическое программирование на параллельные вычисления. Однако Хьюитт и Ага [1991] утверждали, что полученные системы не были дедуктивными в следующем смысле: вычислительные шаги систем параллельного логического программирования не следуют дедуктивно из предыдущих шагов (см. Неопределенность в параллельных вычислениях ). Недавно логическое программирование было интегрировано в модель актора таким образом, что сохраняется логическая семантика. [21]

Миграция

Миграция в модели акторов — это способность акторов менять местоположение. Например , в своей диссертации Аки Ёнезава смоделировал почтовое отделение, в которое акторы-клиенты могут входить, менять местоположение внутри во время работы и выходить. Актор, который может мигрировать, может быть смоделирован с помощью актора местоположения, который меняется, когда актёр мигрирует. Однако достоверность этого моделирования является спорной и является предметом исследования. [ необходима цитата ]

Безопасность

Безопасность субъектов может быть обеспечена следующими способами:

Синтез адресов актеров

Тонким моментом в модели актора является возможность синтезировать адрес актора. В некоторых случаях безопасность может быть использована для предотвращения синтеза адресов (см. Безопасность). Однако, если адрес актора — это просто строка битов, то, очевидно, его можно синтезировать, хотя может быть сложно или даже невозможно угадать адрес актора, если строки битов достаточно длинные. SOAP использует URL для адреса конечной точки, где можно достичь актора. Поскольку URL — это строка символов, его, очевидно, можно синтезировать, хотя шифрование может сделать ее угадывание практически невозможным.

Синтез адресов акторов обычно моделируется с помощью сопоставления. Идея заключается в использовании системы акторов для выполнения сопоставления с реальными адресами акторов. Например, на компьютере структура памяти компьютера может быть смоделирована как система акторов, которая выполняет сопоставление. В случае адресов SOAP это моделирование DNS и остальной части сопоставления URL .

Контраст с другими моделями параллельной передачи сообщений

Первоначальная опубликованная работа Робина Милнера по параллелизму [23] также была примечательна тем, что она не была основана на составлении последовательных процессов. Его работа отличалась от модели акторов, поскольку она была основана на фиксированном количестве процессов фиксированной топологии, обменивающихся числами и строками с использованием синхронной коммуникации. Первоначальная модель общающихся последовательных процессов (CSP) [24], опубликованная Тони Хоаром , отличалась от модели акторов, поскольку она была основана на параллельной композиции фиксированного количества последовательных процессов, связанных в фиксированной топологии, и обменивающихся сообщениями с использованием синхронной передачи сообщений на основе имен процессов (см. История модели акторов и исчислений процессов ). Более поздние версии CSP отказались от коммуникации, основанной на именах процессов, в пользу анонимной коммуникации через каналы, подход, также используемый в работе Милнера по исчислению общающихся систем и π-исчислению .

Эти ранние модели Милнера и Хоара обе имели свойство ограниченного недетерминизма. Современная теоретическая CSP ([Hoare 1985] и [Roscoe 2005]) явно обеспечивает неограниченный недетерминизм.

Сети Петри и их расширения (например, цветные сети Петри) похожи на акторы в том, что они основаны на асинхронной передаче сообщений и неограниченном недетерминизме, в то время как они похожи на ранние CSP в том, что они определяют фиксированные топологии элементарных этапов обработки (переходов) и хранилищ сообщений (мест).

Влияние

Модель акторов оказала влияние как на развитие теории, так и на практическую разработку программного обеспечения.

Теория

Модель актора повлияла на развитие π-исчисления и последующих исчислений процессов . В своей лекции Тьюринга Робин Милнер писал: [25]

Теперь чистое лямбда-исчисление строится всего с двумя типами вещей: терминами и переменными. Можем ли мы достичь той же экономии для исчисления процессов? Карл Хьюитт со своей моделью акторов ответил на этот вызов давно; он заявил, что значение, оператор значений и процесс должны быть одним и тем же типом вещей: актором.

Эта цель произвела на меня впечатление, поскольку она подразумевает однородность и полноту выражения... Но прошло много времени, прежде чем я смог увидеть, как достичь этой цели в терминах алгебраического исчисления...

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

Упражняться

Модель акторов оказала большое влияние на коммерческую практику. Например, Twitter использовал акторы для масштабируемости. [26] Кроме того, Microsoft использовала модель акторов при разработке своей библиотеки асинхронных агентов. [27] Существует множество других библиотек акторов, перечисленных в разделе библиотек акторов и фреймворков ниже.

Решенные проблемы

По словам Хьюитта [2006], модель акторов решает проблемы компьютерной и коммуникационной архитектуры, параллельных языков программирования и веб-сервисов , включая следующие:

Многие из идей, представленных в модели акторов, теперь также находят применение в многоагентных системах по тем же причинам [Hewitt 2006b 2007b]. Ключевое отличие заключается в том, что агентские системы (в большинстве определений) накладывают дополнительные ограничения на акторов, обычно требуя, чтобы они использовали обязательства и цели.

Программирование с актерами

Ряд различных языков программирования используют модель актора или некоторые ее вариации. Эти языки включают:

Ранние языки программирования акторов

Более поздние языки программирования акторов

Библиотеки и фреймворки акторов

Библиотеки или фреймворки акторов также были реализованы для того, чтобы разрешить программирование в стиле акторов в языках, в которых нет встроенных акторов. Некоторые из этих фреймворков:

Смотрите также

Ссылки

  1. ^ Хьюитт, Карл ; Бишоп, Питер; Штайгер, Ричард (1973). «Универсальный модульный акторный формализм для искусственного интеллекта». IJCAI. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  2. ^ abcd Уильям Клингер (июнь 1981 г.). «Основы семантики акторов». Диссертация на соискание ученой степени доктора математики. Массачусетский технологический институт. hdl :1721.1/6935. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  3. ^ ab Irene Greif (август 1975). «Семантика взаимодействующих параллельных процессов». Докторская диссертация EECS. Массачусетский технологический институт. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  4. ^ ab Генри Бейкер ; Карл Хьюитт (август 1977 г.). «Законы для взаимодействия параллельных процессов». IFIP. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  5. ^ "Законы для взаимодействия параллельных процессов" (PDF) . 10 мая 1977 г. Архивировано (PDF) из оригинала 24 июня 2016 г. Получено 11 июня 2014 г.
  6. ^ abc Gul Agha (1986). «Акторы: модель параллельных вычислений в распределенных системах». Докторская диссертация. MIT Press. hdl :1721.1/6952. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  7. ^ "Home". Osl.cs.uiuc.edu. Архивировано из оригинала 2013-02-22 . Получено 2012-12-02 .
  8. ^ Карл Хьюитт. Рассмотрение структур управления как шаблонов передачи сообщений. Журнал искусственного интеллекта. Июнь 1977 г.
  9. ^ ab Gul Agha; Ian Mason; Scott Smith; Carolyn Talcott (январь 1993 г.). "Основы вычислений акторов". Журнал функционального программирования .
  10. ^ Карл Хьюитт (27.04.2006). «Что такое приверженность? Физическая, организационная и социальная» (PDF) . Архивировано (PDF) из оригинала 11.02.2021 . Получено 26.05.2006 . {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  11. ^ Мауро Гаспари; Джанлуиджи Заваттаро (май 1997 г.). «Алгебра актеров» (PDF) . Формальные методы для открытых объектно-ориентированных распределенных систем . Технический отчет UBLCS-97-4. Болонский университет. стр. 3–18. дои : 10.1007/978-0-387-35562-7_2. ISBN 978-1-4757-5266-3. Архивировано (PDF) из оригинала 2018-07-26 . Получено 2019-04-08 .
  12. ^ М. Гаспари; Г. Заваттаро (1999). «Алгебра акторов». Формальные методы для открытых объектно-ориентированных систем. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  13. ^ Гул Агха ; Прасанна Тати (2004). «Алгебраическая теория акторов и ее применение к простому объектно-ориентированному языку» (PDF) . От ОО к ФМ (Dahl Festschrift) LNCS 2635. Архивировано из оригинала (PDF) 2004-04-20. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  14. ^ Джон Дарлингтон; YK Guo (1994). «Формализация акторов в линейной логике». Международная конференция по объектно-ориентированным информационным системам. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  15. ^ «Что такое модель актёра и когда её следует использовать?». Мэтт Фердерер . Архивировано из оригинала 2021-08-25 . Получено 2021-08-25 .
  16. ^ Чунг, Лео (2017-07-25). «Почему Akka и модель актора сияют для приложений IoT». InfoWorld . Архивировано из оригинала 2021-08-25 . Получено 2021-08-25 .
  17. ^ Хансен, Пер Бринч (2002). Истоки параллельного программирования: от семафоров до удаленных вызовов процедур . Springer. ISBN 978-0-387-95401-1.
  18. ^ Хансен, Пер Бринч (1996). «Мониторы и параллельный Паскаль: личная история». Сообщения ACM : 121–172.
  19. Хоар, Тони (октябрь 1974 г.). «Мониторы: концепция структурирования операционной системы». Communications of the ACM . 17 (10): 549–557. doi : 10.1145/355620.361161 . S2CID  1005769.
  20. ^ Хансен, Пер Бринч (июль 1973 г.). Принципы операционной системы . Prentice-Hall.
  21. ^ ab Hewitt, Carl (2012). "Что такое вычисление? Модель актора против модели Тьюринга". В Zenil, Hector (ред.). Вычислимая Вселенная: понимание вычислений и исследование природы как вычислений. Посвящается памяти Алана М. Тьюринга в 100-ю годовщину со дня его рождения . World Scientific Publishing Company.
  22. ^ Фредерик Кнабе. Распределенный протокол для канальной связи с выбором PARLE 1992 Архивировано 31 августа 2017 г. на Wayback Machine .
  23. ^ Робин Милнер. Процессы: математическая модель вычислительных агентов в коллоквиуме по логике 1973.
  24. ^ CAR Hoare. Коммуникационные последовательные процессы CACM. Август 1978 г.
  25. ^ Милнер, Робин (1993). «Элементы взаимодействия». Сообщения ACM . 36 : 78–89. doi : 10.1145/151233.151240 .
  26. ^ «Как Twitter масштабируется «Блог Вайминга Мока». Waimingmok.wordpress.com. 2009-06-27. Архивировано из оригинала 2021-02-05 . Получено 2012-12-02 .
  27. ^ «Программирование на основе акторов с использованием библиотеки асинхронных агентов. Архивировано 31 августа 2017 г. на Wayback Machine », MSDN, сентябрь 2010 г.
  28. Генри Либерман (июнь 1981 г.). «Предварительный просмотр Акта 1». MIT AI memo 625. hdl :1721.1/6350. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  29. Генри Либерман (июнь 1981 г.). «Думать о множестве вещей одновременно, не запутавшись: параллелизм в первом акте». Меморандум MIT AI 626. hdl :1721.1/6351. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  30. ^ Жан-Пьер Брио. Acttalk: Фреймворк для объектно-ориентированного параллельного программирования — проектирование и опыт 2-го франко-японского семинара. 1999. Архивировано 28.06.2018 на Wayback Machine
  31. ^ Кен Кан. Вычислительная теория анимации. Архивировано 18 августа 2017 г. в Wayback Machine. Докторская диссертация MIT EECS. Август 1979 г.
  32. ^ Уильям Атас и Нанетт Боден Кантор: Система программирования акторов для научных вычислений. Архивировано 08.04.2019 в Wayback Machine в трудах семинара NSF по объектно-ориентированному параллельному программированию. 1988. Специальный выпуск уведомлений SIGPLAN.
  33. ^ Даррелл Вулк. Разработка агентов InfoSleuth с использованием Rosette: язык, основанный на актерах. Труды семинара CIKM '95 по интеллектуальным информационным агентам. 1995.
  34. ^ Дедекер Дж., Ван Катсем Т., Мостинкс С., Д'Хондт Т., Де Мойтер В. Окружающее программирование в AmbientTalk. В «Материалах 20-й Европейской конференции по объектно-ориентированному программированию (ECOOP), Дэйв Томас (ред.), Конспекты лекций по информатике, том 4067, стр. 230–254, Springer-Verlag.», 2006 г.
  35. ^ Даррил К. Тафт (2009-04-17). «Microsoft готовит новый параллельный язык программирования». Eweek.com. Архивировано из оригинала 29 июля 2012 года . Получено 2012-12-02 .
  36. ^ "Humus". Dalnefre.com. Архивировано из оригинала 2021-02-07 . Получено 2012-12-02 .
  37. ^ Брандауэр, Стефан и др. (2015). «Параллельные объекты для многоядерных процессоров: взгляд на параллельный язык». Формальные методы многоядерного программирования . Springer International Publishing: 1–56.
  38. ^ "The Pony Language". Архивировано из оригинала 2018-09-04 . Получено 2016-03-21 .
  39. ^ Клебш, Сильван; Дроссопулу, София; Блессинг, Себастьян; Макнил, Энди (2015). «Отрицать возможности для безопасных, быстрых акторов». Труды 5-го Международного семинара по программированию на основе акторов, агентов и децентрализованного управления — AGERE! 2015. стр. 1–12. doi :10.1145/2824815.2824816. ISBN 9781450339018. S2CID  415745.Сильван Клебш, София Дроссопулу, Себастьян Блессинг, Энди Макнил
  40. ^ "The P Language". GitHub . 2019-03-08. Архивировано из оригинала 2021-01-15 . Получено 2017-02-01 .
  41. ^ "Язык P#". GitHub . 2019-03-12. Архивировано из оригинала 2021-03-23 . Получено 2017-02-01 .
  42. ^ "class Ractor". Ruby-lang.org. Архивировано из оригинала 2022-03-02 . Получено 2022-03-02 .
  43. ^ Карлос Варела и Гул Ага (2001). «Программирование динамически реконфигурируемых открытых систем с помощью SALSA». Уведомления ACM SIGPLAN. Труды OOPSLA'2001 Intriguing Technology Track . 36 .
  44. ^ Филипп Халлер и Мартин Одерски (сентябрь 2006 г.). «Программирование на основе событий без инверсии управления» (PDF) . Proc. JMLC 2006. Архивировано (PDF) из оригинала 2020-11-09 . Получено 2007-04-05 . {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  45. ^ Филипп Халлер и Мартин Одерски (январь 2007 г.). «Акторы, объединяющие потоки и события» (PDF) . Технический отчет LAMP 2007. Архивировано из оригинала (PDF) 2011-06-07 . Получено 2007-12-10 . {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  46. ^ "Swift Language Guide - Concurrency". Архивировано из оригинала 1 марта 2022 г. Получено 11 марта 2022 г.
  47. ^ "acteur - 0.9.1· Дэвид Бонет · Crates.io". crates.io. Архивировано из оригинала 2021-02-05 . Получено 2020-04-16 .
  48. ^ Булут, Махмут (2019-12-15). "Bastion on Crates.io". Crates.io . Архивировано из оригинала 2021-02-05 . Получено 2019-12-15 .
  49. ^ "actix - 0.10.0· Rob Ede · Crates.io". crates.io. Архивировано из оригинала 2021-05-14 . Получено 2021-02-28 .
  50. ^ "Releases · zakgof/actr · GitHub". Github.com. Архивировано из оригинала 2020-10-26 . Получено 2019-04-16 .
  51. ^ «Выпущена Akka 2.6.20 · Akka» . Акка. 06.09.2022. Архивировано из оригинала 24 сентября 2022 г. Проверено 24 сентября 2022 г.
  52. ^ "Часто задаваемые вопросы о лицензии Akka | @lightbend". Архивировано из оригинала 2022-09-22 . Получено 2022-09-24 .
  53. ^ Akka.NET v1.4.10 Stable Release GitHub - akkadotnet/akka.net: Порт актеров Akka для .NET., Akka.NET, 2020-10-01, заархивировано из оригинала 2021-02-24 , извлечено 2020-10-01
  54. ^ Апачи Пекко (выпускник), Apache Software Foundation
  55. ^ Шринивасан, Шрирам; Алан Майкрофт (2008). "Kilim: Isolation-Typed Actors for Java" (PDF) . Европейская конференция по объектно-ориентированному программированию ECOOP 2008 . Кипр. Архивировано (PDF) из оригинала 2020-10-28 . Получено 2016-02-25 .
  56. ^ "Releases · kilim/kilim · GitHub". Github.com. Архивировано из оригинала 2020-10-16 . Получено 2019-06-03 .
  57. ^ "История коммитов · stevedekorte/ActorKit · GitHub". Github.com . Получено 25.02.2016 .
  58. ^ "Hackage: The Haskell Package Repository". Hackage . Получено 1 мая 2024 г. .
  59. ^ "CloudI: Облако на самом низком уровне · Активность". sourceforge.net . Получено 2024-01-03 .
  60. ^ "Теги · GNOME/clutter · GitLab". gitlab.gnome.org. Архивировано из оригинала 2019-06-03 . Получено 2019-06-03 .
  61. ^ "Releases · ncthbrt/nact · GitHub". GitHub . Архивировано из оригинала 2020-11-27 . Получено 2019-06-03 .
  62. ^ "Изменения - retlang - Параллелизм на основе сообщений в .NET - Google Project Hosting". Архивировано из оригинала 2015-11-24 . Получено 2016-02-25 .
  63. ^ "jetlang-0.2.9-bin.zip - jetlang - jetlang-0.2.9-bin.zip - Параллелизм на основе сообщений для Java - Google Project Hosting". 2012-02-14. Архивировано из оригинала 2016-01-14 . Получено 2016-02-25 .
  64. ^ "GPars Releases". GitHub. Архивировано из оригинала 2020-09-04 . Получено 2016-02-25 .
  65. ^ "Releases · oosmos/oosmos · GitHub". GitHub. Архивировано из оригинала 2020-11-13 . Получено 2019-06-03 .
  66. ^ "Pulsar Design and Actors". Архивировано из оригинала 2015-07-04.
  67. ^ "Документация пульсара". Архивировано из оригинала 2013-07-26.
  68. ^ "Изменения – Документация Pykka 2.0.0". pykka.org. Архивировано из оригинала 2021-02-05 . Получено 2019-06-03 .
  69. ^ "Терон – Эштон Мейсон". Архивировано из оригинала 2019-03-31 . Получено 2018-08-29 .
  70. ^ "Theron - Выпущена версия 6.00.02". Theron-library.com. Архивировано из оригинала 2016-03-16 . Получено 2016-02-25 .
  71. ^ "Theron". Theron-library.com. Архивировано из оригинала 2016-03-04 . Получено 2016-02-25 .
  72. ^ "Releases · puniverse/quasar · GitHub". GitHub . Архивировано из оригинала 2020-12-15 . Получено 2019-06-03 .
  73. ^ "Изменения - Actor-cpp - Реализация модели акторов для C++ - Google Project Hosting". Архивировано из оригинала 2015-11-18 . Получено 2012-12-02 .
  74. ^ "История коммитов · s4/s4 · Apache". apache.org. Архивировано из оригинала 2016-03-06 . Получено 2016-01-16 .
  75. ^ "Releases · Actor-framework/actor-framework · GitHub". Github.com. Архивировано из оригинала 2021-03-26 . Получено 2020-03-07 .
  76. ^ "celluloid | RubyGems.org | your community gem host". RubyGems.org. Архивировано из оригинала 2020-09-29 . Получено 2019-06-03 .
  77. ^ "Сообщество: Actor Framework, LV 2011 revision (version 3.0.7)". Decibel.ni.com. 2011-09-23. Архивировано из оригинала 2016-10-13 . Получено 2016-02-25 .
  78. ^ "Выпуски · орбита/орбита · GitHub". GitHub . Получено 2019-06-03 .
  79. ^ "QP Real-Time Embedded Frameworks & Tools - Browse Files at". Sourceforge.net. Архивировано из оригинала 2021-02-24 . Получено 2019-06-03 .
  80. ^ "Releases · Stiffstream/sobjectizer · GitHub". GitHub. Архивировано из оригинала 2020-10-19 . Получено 2022-05-11 .
  81. ^ "Releases · basiliscos/cpp-rotor· GitHub". GitHub. Архивировано из оригинала 2020-09-15 . Получено 2022-05-17 .
  82. ^ "Releases · dotnet/orleans · GitHub". GitHub. Архивировано из оригинала 2020-12-04 . Получено 2022-09-21 .
  83. ^ "FunctionalJava releases". GitHub. Архивировано из оригинала 2021-01-15 . Получено 2018-08-23 .

Дальнейшее чтение

Внешние ссылки