(Translated by https://www.hiragana.jp/)
演员模型 - 维基百科,自由的百科全书

えんじ员模がた

重定しげさだこう參與さんよしゃしき

ざい電腦でんのう科學かがくなかえんじいん模型もけい英語えいごActor modelいちしゅ並行へいこう運算うんざんうえてき模型もけい。「えんじいん一種程式上的抽象概念,ため並行へいこう運算うんざんてき基本きほん單元たんげんとう一個演員接收到一則訊息,它可以做いち些決さく建立こんりゅうさらてきえんじいん傳送でんそうさらてき訊息、決定けっていよう如何いか回答かいとうせっらいてき訊息。えんじ员可以修あらため它们自己じこてき私有しゆうじょうただしこれただのうどおり过消いき间接てき相互そうごかげ响(避免りょうもと于锁てきどう)。

えんじいん模型もけいざい1973ねんCarl HewittえいCarl Hewitt、Peter Bishop及Richard Steigerてき論文ろんぶんちゅう提出ていしゅつ[1]。它已经被用作ようさく并发计算てき理解りかいえいActor model theoryかまち并发けいてき实际实现えいActor model implementationもと础。えんじ员模がた其他类似工作こうさくてき关系讨论见于えんじ员模がた进程演算えんざんえいactor model and process calculi

基本きほん概念がいねん

编辑

えんじ员模がた推崇てき哲学てつがく“一切皆是演员”,这与めんこう对象编程てき一切いっさいみな对象”类似。

えんじ员是一个运算实体,响应接收せっしゅういたてき消息しょうそく相互そうご间是并发てき

  • 发送有限ゆうげん数量すうりょうてき消息しょうそく给其えんじ员;
  • 创建有限ゆうげん数量すうりょうてきしんえんじ员;
  • 指定してい接收せっしゅういたしも一个消息时要用到的行为。

以上いじょう动作含有がんゆう顺序执行てきかり设,いん此可以并行进行。

发送しゃあずかやめ发送通信つうしんてきかい耦,えんじ员模がたてき根本こんぽん优势,えんじ员模がた启用りょう异步通信つうしん并将ひかえせい结构とうさく消息しょうそく传递てきしき[2]

消息しょうそく接收せっしゅうしゃどおり过地区分くぶんてきゆう时也しょうさく“邮件”。よし此演员只のう它拥ゆうてきえんじ通信つうしん。它可以通过接收せっしゅういたてきしんいき获取あるもの获取它创けんてきえんじ员的

えんじ员模がたてきとくせいえんじ员内ある相互そうご间的计算ほん质上并发せいてきえんじ员可以动态创けんえんじ员地包含ほうがんざい消息しょうそくちゅう交互こうごただゆうどおり直接的ちょくせつてき异步消息しょうそく传递通信つうしんきりせい消息しょうそくいた达的顺序。

历史

编辑

えんじ员模がた受到りょうLispSimulaSmalltalk-72もと于权げんてきけいえいcapability-based securityぶん组交换てきかげ响。其发てん“受到よし几十、几百、甚至几千个独立微处理机构成的高度并行计算つくえてき前景ぜんけいしょ推动,其中てきまい个处つくえゆう自己じこ局部きょくぶないそん通信つうしん处理,它们どおり过高性能せいのう网络进行通信つうしん。”[3]此后ずいさいよう多核たかく众核えいManycore processor计算つくえ构的だい规模并发计算てき现,にん们已经重しんもえおこりりょう对演员模がたてき兴趣。

ざいHewitt、BishopSteigerてき1973年刊ねんかんぶつきさきIrene GreifえいIrene Greifざい1975ねん博士はかせ论文ちゅう,为演员模がた开发りょういち操作そうさ语义[4]Henry BakerえいHenry BakerかずHewittざい1977ねん发表りょうえんじ员系统的公理こうりほう[5][6]。其他主要しゅようてき里程りてい包括ほうかつWilliam ClingerえいWilliam Clinger (computer scientist)てき1981ねん学位がくい论文,它介入かいにゅうりょうもと幂域えいPower domainsてきゆびしょう语义[3];还有Gul AghaえいGul Aghaてき1985ねん学位がくい论文,它进一步发展出基于transitionてき语义模型もけい,从而补充りょうClingerてき模型もけい[7]。这些工作こうさく促成そくせいりょうえんじ员模がたえいactor model theoryてき全面ぜんめん发展。

主要しゅようてき软件实现工作こうさくゆかりあさしょう理工りこう学院がくいんてき消息しょうそく传递语义しょう完成かんせい,其成员包括ほうかつRuss Atkinson、Giuseppe Attardi、Henry Baker、Gerry Barber、Peter Bishop、Peter de Jong、Ken Kahn、Henry Lieberman、Carl Manning、Tom Reinhardt、Richard SteigerDan Theriault。ぶん别由加州かしゅう理工りこう学院がくいんてきChuck Seitzあさしょう理工りこう学院がくいんてきBill Dally领导てき研究けんきゅうしょう组,致力于构づくりしんてき计算つくえ构,よう以进一步发展演员模型中的消息传递。ゆう工作こうさく详见えんじ员模がた实现えいActor model implementation

えんじ员模がたてき研究けんきゅうやめ经开てん加州かしゅう理工りこう学院がくいん京都大学きょうとだいがくほろ电子及计さんつくえわざ公司こうしえいMicroelectronics and Computer Technology CorporationMIT人工じんこう智能ちのう实验しつ斯坦ぶくこく研究所けんきゅうじょ斯坦ぶく大学だいがく诺伊大学だいがくやくともえ纳-こう槟分こう[8]ともえはじむだいろく大学だいがく萨大がく东京大学だいがく米澤よねざわにち米澤よねざわ明憲あきのり研究けんきゅうしつ兰数がく计算つくえ科学かがく研究けんきゅう学会がっかいかず其他いち地方ちほう

使用しようえんじ员模がた编程

编辑

一些编程语言使用了演员模型或变种。这些语言包括ほうかつ

早期そうきてきえんじ员模がた编程语言

编辑

きさきてきえんじ员模がた编程语言

编辑

えんじ员模がた库及かまち

编辑

えんじ员模がた库及かまちまこと许用户在ぼつゆうないおけえんじ员模がたてき语言ちゅう进行编程。这些かまち包括ほうかつ

名称めいしょう じょう 最新さいしん发行 许可证 语言
ReActed[26] かつ 2022-11-30 Apache 2.0 Java
Acteur[27] かつ 2020-04-16[28] Apache-2.0 / MIT Rust
Bastion[29] かつ 2020-08-12[30] Apache-2.0 / MIT Rust
Actix[31] かつ 2019-05-30[32] MIT Rust
Aojet[33] かつ 2016-10-17 MIT Swift
Actor[34] かつ 2017-03-09 MIT Java
Actor4j[35] かつ 2020-01-31 Apache 2.0 Java
Actr[36] かつ 2019-04-09[37] Apache 2.0 Java
Vert.x[38] かつ 2018-02-13 Apache 2.0 Java, Groovy, Javascript, Ruby, Scala, Kotlin, Ceylon
ActorFx[39] かつ 2013-11-13 Apache 2.0 .NET
Akka かつ 2022-09-06[40] Apache 2.0 Java and Scala
Akka.NET[41] かつ 2020-08-20[42] Apache 2.0 .NET
Apache Pekko[43] かつ 2023-07-26[44] Apache 2.0 Java and Scala
Remact.Net[45] かつ 2016-06-26 MIT .NET, Javascript
Ateji PX[46] かつ ? ? Java
czmq[47] かつ 2016-11-10 MPL-2 C
F# MailboxProcessor かつ どう于F# (うちけん核心かくしん库) Apache License F#
Korus[48] かつ 2010-02-04 GPL 3 Java
Kilim[49][50] かつ 2018-11-09[51] MIT Java
ActorFoundry (もと于Kilim) かつ 2008-12-28 ? Java
ActorKit[52] かつ 2011-09-13[53] BSD Objective-C
Cloud Haskell[54] かつ 2015-06-17[55] BSD Haskell
CloudI[56] かつ 2023-10-27[57] MIT ATS, C/C++, Elixir/Erlang/LFE, Go, Haskell, Java, Javascript, OCaml, Perl, PHP, Python, Ruby
Clutter[58] かつ 2017-05-12[59] LGPL 2.1 C, C++ (cluttermm), Python (pyclutter), Perl (perl-Clutter)
NAct[60] かつ 2012-02-28 LGPL 3.0 .NET
Nact[61] かつ 2018-06-06[62] Apache 2.0 JavaScript/ReasonML
Retlang[63] かつ 2011-05-18[64] New BSD .NET
JActor[65] かつ 2013-01-22 LGPL Java
Jetlang[66] かつ 2013-05-30[67] New BSD Java
Haskell-Actor[68] かつ跃? 2008 New BSD Haskell
GPars[69] かつ 2014-05-09[70] Apache 2.0 Groovy
OOSMOS[71] かつ 2019-05-09[72] GPL 2.0かずしょう业(そう许可证) C. C++ friendly
Panini[73] かつ 2014-05-22 MPL 1.1 自己じこてき编程语言
PARLEY[74] かつ跃? 2007-22-07 GPL 2.1 Python
Peernetic[75] かつ 2007-06-29 LGPL 3.0 Java
PostSharp[76] かつ 2014-09-24 しょう业 / Freemium .NET
Pulsar[77] かつ 2016-07-09[78] New BSD Python
Pulsar[79] かつ 2016-02-18[80] LGPL/Eclipse Clojure
Pykka[81] かつ 2019-05-07[82] Apache 2.0 Python
Termite Scheme[83] かつ跃? 2009-05-21 LGPL Scheme (Gambit实现)
Theron[84] かつ[85] 2014-01-18[86] MIT[87] C++
Thespian[88] かつ 2020-03-10 MIT Python
Quasar[89] かつ 2018-11-02[90] LGPL/Eclipse Java
Libactor[91] かつ跃? 2009 GPL 2.0 C
Actor-CPP[92] かつ 2012-03-10[93] GPL 2.0 C++
S4[94] かつ 2012-07-31[95] Apache 2.0 Java
C++ Actor Framework (CAF)[96] かつ 2020-02-08[97] Boost Software License 1.0 and BSD 3-Clause C++11
Celluloid[98] かつ 2018-12-20[99] MIT Ruby
LabVIEW Actor Framework[100] かつ 2012-03-01[101] National Instruments SLA[102] LabVIEW
LabVIEW Messenger Library[103] かつ 2021-05-24 BSD LabVIEW
Otavia[104] かつ 2024-01-02 Apache 2.0 Scala
Orbit[105] かつ 2019-05-28[106] New BSD Java
QPかまち かつ 2019-05-25[107] GPL 2.0かずしょう业(そう许可证) C and C++
libprocess[108] かつ 2013-06-19 Apache 2.0 C++
SObjectizer[109] かつ 2021-12-28[110] New BSD C++11
rotor[111] かつ 2022-04-23[112] MIT License C++17
Orleans[113] かつ 2023-07-11[114] MIT License C#/.NET
Skynet[115] かつ 2016-07-11 MIT License C/Lua
Reactors.IO[116] かつ 2016-06-14 BSD License Java/Scala
libagents[117] かつ 2020-03-08 Free software license C++11
Proto.Actor[118] かつ 2021-01-05 Free software license Go, C#, Python, JavaScript, Java, Kotlin
FunctionalJava[119] かつ 2018-08-18[120] BSD 3-Clause Java
Riker[121] かつ 2019-01-04 MIT License Rust
Comedy[122] かつ 2019-03-09 EPL 1.0 JavaScript
VLINGO XOOM Actors[123] かつ 2023-02-15 Mozilla Public License 2.0 Java, Kotlin, JVM languages, C# .NET
wasmCloud[124] かつ 2021-03-23 Apache 2.0 WebAssembly (Rust, TinyGo, Zig, AssemblyScript)
ray[125] かつ 2020-08-27 Apache 2.0 Python
DOTNETACTORS[126] かつ 2021-06-14 MIT .NET, C#, Azure Service Bus
go-actor[127] かつ 2022-08-16 GPL 3.0 Golang
Sento[128] かつ 2022-11-21 Apache 2.0 Common Lisp
Xcraft Goblins[129] かつ 2022-08-30 MIT JavaScript
Tarant[130] かつ 2023-04-17 MIT Typescript, Javascript

注意ちゅうい这里ぼつゆうれつ全部ぜんぶかまち库。

并发编程语言用例ようれい

编辑

つきかんErlang语言设计しゃ并未如此ひょうじゅつ[131]いん进程间通信つうしんどおり无共とおるえいShared-nothing architecture异步えいAsynchrony (computer programming)消息しょうそく传递けい统运さく,它一般被引证为采用演员模型的典型代表之一。ざいErlangなか所有しょゆう进程みやこ有一ゆういち自己じこてき“邮箱”,它是从其进程やめ经发送过来而仍けし费的消息しょうそくてき队列。进程使用しようreceiveはら语来检索ひきはい预期しきてき消息しょうそく。一个消息处理例程针对每个模式依次测试这些消息,ちょくいた中有ちゅうういち个匹はいざい消息しょうそくけし费并从邮ばこちゅううつりじょ时进ほど恢复执行。消息しょうそく包含ほうがんにんなんErlang结构,包括ほうかつ原始げんし类型(整数せいすう,浮点すう原子げんし)、もと组、れつひょう函数かんすう

下面かめんれい展示てんじりょうErlang对分布ぶんぷしき进程てきないけん支持しじ

% 建立こんりゅう一个进程并启用函数web:start_server(Port, MaxConnections)
ServerProcess = spawn(web, start_server, [Port, MaxConnections]),

% ざいつくえRemoteNodeじょう建立こんりゅう一个远程进程并启用函数web:start_server(Port, MaxConnections)
RemoteProcess = spawn(RemoteNode, web, start_server, [Port, MaxConnections]),

% (异步てき)发送消息しょうそくいたServerProcess。消息しょうそく包含ほうがんいち个元组,它具有ぐゆう原子げんし"pause"すう"10"。
ServerProcess ! {pause, 10},

% 接收せっしゅう发给这个进程てき消息しょうそく
receive
    a_message -> do_something;
    {data, DataContent} -> handle(DataContent);
    {hello, Text} -> io:format("Got hello message: ~s", [Text]);
    {goodbye, Text} -> io:format("Got goodbye message: ~s", [Text])
end.

原型げんけいてきえんじ员编ほど语言

编辑

Hewittざい2006ねん发表りょう一个原型的演员编程语言,用意よういざい直接ちょくせつひょう达演员行为的重要じゅうよう方面ほうめん[132]消息しょうそくさいよう如下表示法ひょうじほう

<标签>[<元素げんそ>1 ... <元素げんそ>n]

编程语言てき语义どおり过将ごと个程じょ构造确定为有自己じこぎょう为的えんじ员来てい义的。执行どおり过在执行间让Eval消息しょうそくざいほどじょ构造间传递来けんてき

环境えんじ

编辑

まいEval消息しょうそくゆう一个充当环境的演员的地址,它能够进ぎょう标识あずか值的绑定(binding)。environmentえんじ员是不可ふか变的(immutable),也就变更てき

  • とういち个environmentえんじ员收いたRequest[Bind[identifier value] customer]てき时候,建立こんりゅう一个新的环境演员environment’发送给customer使つかいとく这个しん环境えんじ员收いたRequest[Lookup[identifier’] customer’]てき时候,如果identifierどうidentifier’,则发送给customer’いちReturned[value]いや则发送给environmentいちRequest[Lookup[identifier’] customer’]
  • とういち个environmentえんじ员收いたRequest[Bind[<しき> String] customer]てき时候,如果此<しき>かたちRequest[msg[paramerer] customer]ひきはいStringかたちRequest[msg[argument] customer],则建立こんりゅう一个新的环境演员environment’发送给customer使つかいとく这个しん环境えんじ员收いたRequest[Lookup[parameter’] customer’]てき时候,如果parameter’どうparameter,则发送给customer’いちReturned[argument]いや则发送给customerいちThrown[NotFound[<しき>]]
  • とういち个environmentえんじ员收いたRequest[Bind[identifier(parameter) value] customer]てき时候,建立こんりゅう一个新的环境演员environment’发送给customer使つかいとく这个しん环境えんじ员收いたRequest[Lookup[identifier’(argument)] customer’]てき时候,如果identifierどうidentifier’,则建立こんりゅう一个新的环境演员environment’’,发送给customer’いちReturned[value]いちReturned[environment’’]いや则发送给environmentいちRequest[Lookup[identifier’(argument)] customer’]。这个しん环境えんじenvironment’’ざいおさむいたRequest[Lookup[parameter’] customer’]てき时候,如果parameter’どうparameter,则发送给customer’いちReturned[argument]いや则发送给environment’いちRequest[Lookup[parameter’] customer’]

上述じょうじゅつ环境えんじ建造けんぞうざいEmptyEnvironmentえんじ员之じょう,它在接收せっしゅういたRequest[Lookup[identifier] customer]てき时候,发送给customerいちThrown[NotFound[identifier]]とう它收いたBind请求てき时候,EmptyEnvironmentおもて现的如同上述じょうじゅつ环境えんじ员。

おもて达式

编辑

原型げんけい语言ゆう如下种类てきひょう达式,这里てき通信つうしん包括ほうかつRequest[...]Returned[...]Thrown[...],这里てき消息しょうそく包括ほうかつEval[...]Bind[...]Lookup[...]

<标识>
ざいおさむいたRequest[Eval[environment] customer]てき时候,发送给environmentいちRequest[Lookup[<标识>] customer]
send <接收せっしゅうしゃ> <通信つうしん>
ざいおさむいたRequest[Eval[environment] customer]てき时候,建立こんりゅう一个新演员evalCustomer1,发送给<接收せっしゅうしゃ>いちRequest[Eval[environment] evalCustomer1]使つかいとく
ざいevalCustomer1おさむいた通信つうしんReturned[theRecipient]てき时候,建立こんりゅう一个新演员evalCustomer2,发送给<通信つうしん>いちRequest[Eval[environment] evalCustomer2]使つかいとく
ざいevalCustomer2おさむいた通信つうしんReturned[theCommunication]てき时候,发送给theRecipientいちtheCommunication
<接收せっしゅうしゃ>.<消息しょうそく>
ざいおさむいたRequest[Eval[environment] customer]てき时候,建立こんりゅう一个新演员evalCustomer1,发送<接收せっしゅうしゃ>いちRequest[Eval[environment] evalCustomer1]使つかいとく
ざいevalCustomer1おさむいた通信つうしんReturned[theRecipient]てき时候,建立こんりゅう一个新演员evalCustomer2,发送给<消息しょうそく>いちRequest[Eval[environment] evalCustomer2]使つかいとく
ざい evalCustomer2おさむいた通信つうしんReturned[theMessage]てき时候,发送给theRecipientいちRequest[theMessage customer]
receiver ... <しき>i <おもて达式>i ...
ざいおさむいたRequest[Eval[environment] customer]てき时候,发送给customer一个新演员theReceiver使つかいとく
ざいtheReceiverおさむいた通信つうしん内容ないようcomてき时候,建立こんりゅう一个新演员bindingCustomer,并发送给environmentいちRequest[Bind[<しき>i com] bindingCustomer],而且
  1. 如果bindingCustomerおさむいたReturned[environment’],发送给<おもて达式>iいちRequest[Eval[environment’]]
  2. しか如果bindingCustomerおさむいたThrown[...],尝试<しき>i+1
behavior ... <しき>i <おもて达式>i ...
ざいおさむいたRequest[Eval[environment] customer]てき时候,发送给customer一个新演员theReceiver使つかいとく
ざいtheReceiverおさむいたRequest[message customer’]てき时候,建立こんりゅう一个新演员bindingCustomer,并发送给environmentいちRequest[bind[<しき>i message] customer’],而且
  1. 如果bindingCustomerおさむいたReturned[environment’],发送给<おもて达式>iいちRequest[Eval[environment’] customer’]
  2. しか如果bindingCustomerおさむいたThrown[...],尝试<しき>i+1
{<おもて达式>1, <おもて达式>2}
ざいおさむいたRequest[Eval[environment] customer]てき时候,发送给<おもて达式>1いちRequest[Eval[environment]],而且并发てき发送给<おもて达式>2いちRequest[Eval[environment] customer]
let <标识> = <おもて达式> in <おもて达式>からだ
ざいおさむいたmessage[Eval[environment] customer]てき时候,建立こんりゅう一个新演员evalCustomer,并发送给<おもて达式>いちRequest[Eval[environment] evalCustomer]
ざいevalCustomerおさむいたReturned[theValue]てき时候,建立こんりゅう一个新演员bindingCustomer,并发送给environmentいちRequest[bind[<标识> theValue] bindingCustomer]
ざいbindingCustomerおさむいたReturned[environment’]てき时候,发送给<expression>からだいちRequest[Eval[environment’] customer]
serializer <おもて达式>
ざいおさむいたRequest[Eval[environment] customer]てき时候,发送给customerいちReturned[theSerializer],这里てきtheSerializerしんえんじ员,使つかいとく发送いたtheSerializerてき通信つうしん按FIFO次序じじょ由行よしゆき为演员处ぎょう为演员初はじめこれ<おもて达式>.Eval[environment],而且
ざいtheSerializerおさむいた通信つうしん内容ないようcomてき时候,建立こんりゅう一个新演员customer’,发送给行为演员一个Request[com customer’]使つかいとく
ざいcustomer’おさむいたReturned[value]Returned[theNextBehavior]てき时候,Returned[value]发送给customer,而theNextBehaviortheSerializer用作ようさく通信つうしんてきぎょう为演员。

れいほどじょ

编辑

下面かめん简单てきそん储单もとかく(cell)てきれい脚本きゃくほん(script),它可以包含ほうがんにんなにえんじ员地

Cell ≡
receiver
Request[Create[initial] customer]
send customer Returned[serializer ReadWrite(initial)]

上述じょうじゅつ脚本きゃくほんしょう建立こんりゅう一个存储单元格,它采ようてきぎょう为ReadWriteてい义如

ReadWrite(contents) ≡
behavior
Request[read[] customer]
{send customer Returned[contents], Returned[ReadWrite(contents)]}
Request[write[x] customer]
{send customer Returned[], Returned[ReadWrite(x)]}

れい如,しもれつひょう达式建立こんりゅういち个单もとかくx,具有ぐゆうはつはじめ内容ないよう5,并接着せっちゃく并发てきこう它写值79。

let x = Cell.Create[5] in {x.write[7], x.write[9], x.read[]}

上述じょうじゅつひょう达式てき值是5、7ある9。

かげ

编辑

えんじ员模がたざい并发计算てき论发てん实践软件开发なかゆうかげ响。

编辑

えんじ员模がたかげ响了πぱい-演算えんざんかずずいきさきてき进程演算えんざんてき发展。ざいRobin Milnerてき图灵奖获奖演说中,うつしいた[133]

纯lambda演算えんざん现在ただ使用しよう两种东西らい建造けんぞう:项和变量。わが们在进程演算えんざんじょう也能实现どう样的经济せい吗?Carl Hewittもたれ其演员模がた,很久以前いぜん就应对了这个挑战;宣告せんこくりょう值、ざい值上てきさん进程,应该同一どういつ种东西にしそくえんじ员。

这个标打动了わがいん为它蕴涵りょうひょう达式ゆうどう质性かずかんせいせい ... ただし很久以后わがざい明白めいはくりょう如何いかすえ代数だいすう演算えんざんらい达成这个标 ...

いん此本Hewittてき精神せいしんわが们的第一步だいいっぽ,就是要求ようきゅうよし指示しじあるよし名字みょうじ访问てき所有しょゆう东西,包括ほうかつ值、よせそんさん、进程、对象,みやこただしどういち种东西にし;它们应当进程。

实践

编辑

えんじ员模がたざいしょう业实践中やめ经有りょう巨大きょだいてきかげ响。れい如,Twitterはたえんじ员用于可しん缩性应用[134]。还有,Microsoftざい其开发的异步代理だいり库中使用しようりょうえんじ员模がた[135]

まいり

编辑

引用いんよう

编辑
  1. ^ Carl Hewitt; Peter Bishop and Richard Steiger. A Universal Modular Actor Formalism for Artificial Intelligence (PDF). IJCAI. 1973 [2020-05-06]. (原始げんし内容ないようそん (PDF)于2021-02-25). 
  2. ^ Carl Hewitt. Viewing Control Structures as Patterns of Passing Messages页面そん档备份そん互联网档あん). Journal of Artificial Intelligence. June 1977.
  3. ^ 3.0 3.1 William Clinger. Foundations of Actor Semantics. Mathematics Doctoral Dissertation. MIT. June 1981. hdl:1721.1/6935. 
  4. ^ Irene Greif. Semantics of Communicating Parallel Processes. EECS Doctoral Dissertation. MIT. August 1975. 
  5. ^ Henry Baker; Carl Hewitt. Laws for Communicating Parallel Processes. IFIP. August 1977. 
  6. ^ Laws for Communicating Parallel Processes (PDF). 10 May 1977 [2020-05-04]. (原始げんし内容ないようそん (PDF)于2016-06-24). 
  7. ^ Gul Agha. Actors: A Model of Concurrent Computation in Distributed Systems. Doctoral Dissertation. MIT Press. 1986. hdl:1721.1/6952. 
  8. ^ Home. Osl.cs.uiuc.edu. [2012-12-02]. (原始げんし内容ないようそん档于2013-02-22). 
  9. ^ Henry Lieberman. A Preview of Act 1. MIT AI memo 625. June 1981. 
  10. ^ Henry Lieberman. Thinking About Lots of Things at Once without Getting Confused: Parallelism in Act 1. MIT AI memo 626. June 1981. 
  11. ^ Jean-Pierre Briot. Acttalk: A framework for object-oriented concurrent programming-design and experience 2nd France-Japan workshop. 1999.
  12. ^ Ken Kahn. A Computational Theory of Animation MIT EECS Doctoral Dissertation. August 1979.
  13. ^ William Athas and Nanette Boden Cantor: An Actor Programming System for Scientific Computing in Proceedings of the NSF Workshop on Object-Based Concurrent Programming. 1988. Special Issue of SIGPLAN Notices.
  14. ^ Darrell Woelk. Developing InfoSleuth Agents Using Rosette: An Actor Based Language Proceedings of the CIKM '95 Workshop on Intelligent Information Agents. 1995.
  15. ^ Dedecker J., Van Cutsem T., Mostinckx S., D'Hondt T., De Meuter W. Ambient-oriented Programming in AmbientTalk. In “Proceedings of the 20th European Conference on Object-Oriented Programming (ECOOP), Dave Thomas (Ed.), Lecture Notes in Computer Science Vol. 4067, pp. 230-254, Springer-Verlag.”, 2006
  16. ^ Darryl K. Taft. Microsoft Cooking Up New Parallel Programming Language. Eweek.com. 2009-04-17 [2012-12-02]. (原始げんし内容ないようそん档于2012-07-29). 
  17. ^ Brandauer, Stephan; et al. Parallel objects for multicores: A glimpse at the parallel language encore.. Formal Methods for Multicore Programming. (Springer International Publishing). 2015: 1–56. 
  18. ^ Humus. Dalnefre.com. [2012-12-02]. (原始げんし内容ないようそん于2021-02-07). 
  19. ^ The Pony Language. [2022-01-11]. (原始げんし内容ないようそん于2018-09-04). 
  20. ^ Clebsch, Sylvan; Drossopoulou, Sophia; Blessing, Sebastian; McNeil, Andy. Deny capabilities for safe, fast actors. Proceedings of the 5th International Workshop on Programming Based on Actors, Agents, and Decentralized Control - AGERE! 2015. 2015: 1–12. ISBN 9781450339018. doi:10.1145/2824815.2824816.  by Sylvan Clebsch, Sophia Drossopoulou, Sebastian Blessing, Andy McNeil
  21. ^ The P Language. 2019-03-08 [2020-05-06]. (原始げんし内容ないようそん于2021-01-15). 
  22. ^ The P# Language. 2019-03-12 [2020-05-06]. (原始げんし内容ないようそん于2021-03-23). 
  23. ^ Carlos Varela and Gul Agha. Programming Dynamically Reconfigurable Open Systems with SALSA. ACM SIGPLAN Notices. OOPSLA'2001 Intriguing Technology Track Proceedings. 2001, 36. 
  24. ^ Philipp Haller and Martin Odersky. Event-Based Programming without Inversion of Control (PDF). Proc. JMLC 2006. September 2006 [2014-08-04]. (原始げんし内容ないようそん (PDF)于2020-11-09). 
  25. ^ Philipp Haller and Martin Odersky. Actors that Unify Threads and Events (PDF). Technical report LAMP 2007. January 2007 [2014-08-04]. (原始げんし内容ないよう (PDF)そん档于2011-06-07). 
  26. ^ ReActed页面そん档备份そん互联网档あん
  27. ^ Acteur页面そん档备份そん互联网档あん
  28. ^ acteur - 0.9.1· David Bonet · Crates.io. crates.io. [2020-04-16]. (原始げんし内容ないようそん于2021-02-05). 
  29. ^ Bastion页面そん档备份そん互联网档あん
  30. ^ Bulut, Mahmut. Bastion on Crates.io. Crates.io. 2019-12-15 [2019-12-15]. (原始げんし内容ないようそん于2021-02-05). 
  31. ^ Actix页面そん档备份そん互联网档あん
  32. ^ actix - 0.8.3· Nikolay Kim · Crates.io. crates.io. [2019-06-03]. (原始げんし内容ないようそん于2021-02-05). 
  33. ^ Aojet页面そん档备份そん互联网档あん
  34. ^ Actor页面そん档备份そん互联网档あん
  35. ^ Actor4j页面そん档备份そん互联网档あん
  36. ^ Actr页面そん档备份そん互联网档あん
  37. ^ Releases · zakgof/actr · GitHub. Github.com. [2019-04-16]. (原始げんし内容ないようそん于2020-10-26). 
  38. ^ Vert.x页面そん档备份そん互联网档あん
  39. ^ ActorFx页面そん档备份そん互联网档あん
  40. ^ Akka 2.6.20 Released · Akka. Akka. 2022-09-06 [2022-12-23]. (原始げんし内容ないようそん于2022-09-24). 
  41. ^ Akka.NET页面そん档备份そん互联网档あん
  42. ^ Akka.NET v1.4.10 Stable Release GitHub - akkadotnet/akka.net: Port of Akka actors for .NET., Akka.NET, 2020-10-01 [2020-10-01], (原始げんし内容ないようそん于2021-02-24) 
  43. ^ Apache Pekko. [2024-02-13]. (原始げんし内容ないようそん于2024-02-10). 
  44. ^ Apache Pekko (Incubating), Apache Software Foundation, [2024-02-13], (原始げんし内容ないようそん于2023-12-04) 
  45. ^ Remact.Net页面そん档备份そん互联网档あん
  46. ^ Ateji PX
  47. ^ czmq页面そん档备份そん互联网档あん
  48. ^ Korus页面そん档备份そん互联网档あん
  49. ^ Kilim页面そん档备份そん互联网档あん
  50. ^ Srinivasan, Sriram; Alan Mycroft. Kilim: Isolation-Typed Actors for Java (PDF). European Conference on Object Oriented Programming ECOOP 2008. Cyprus. 2008 [2016-02-25]. (原始げんし内容ないようそん (PDF)于2020-10-28). 
  51. ^ Releases · kilim/kilim · GitHub. Github.com. [2019-06-03]. (原始げんし内容ないようそん于2020-10-16). 
  52. ^ ActorKit页面そん档备份そん互联网档あん
  53. ^ Commit History · stevedekorte/ActorKit · GitHub. Github.com. [2016-02-25]. 
  54. ^ Cloud Haskell[失效しっこう連結れんけつ]
  55. ^ Commit History · haskell-distributed/distributed-process · GitHub. Github.com. [2012-12-02]. (原始げんし内容ないようそん于2017-03-24). 
  56. ^ CloudI页面そん档备份そん互联网档あん
  57. ^ CloudI: A Cloud at the lowest level · Activity. sourceforge.net. [2024-01-03]. (原始げんし内容ないようそん于2024-01-04). 
  58. ^ Clutter页面そん档备份そん互联网档あん
  59. ^ Tags · GNOME/clutter · GitLab. gitlab.gnome.org. [2019-06-03]. (原始げんし内容ないようそん于2019-06-03). 
  60. ^ NAct页面そん档备份そん互联网档あん
  61. ^ Nact页面そん档备份そん互联网档あん
  62. ^ Releases · ncthbrt/nact · GitHub. [2019-06-03]. (原始げんし内容ないようそん于2020-11-27). 
  63. ^ Retlang页面そん档备份そん互联网档あん
  64. ^ Changes - retlang - Message based concurrency in .NET - Google Project Hosting. [2016-02-25]. (原始げんし内容ないようそん于2015-11-24). 
  65. ^ JActor
  66. ^ Jetlang页面そん档备份そん互联网档あん
  67. ^ jetlang-0.2.9-bin.zip - jetlang - jetlang-0.2.9-bin.zip - Message based concurrency for Java - Google Project Hosting. 2012-02-14 [2016-02-25]. (原始げんし内容ないようそん于2016-01-14). 
  68. ^ Haskell-Actor页面そん档备份そん互联网档あん
  69. ^ GPars页面そん档备份そん互联网档あん
  70. ^ GPars Releases. GitHub. [2016-02-25]. (原始げんし内容ないようそん于2020-09-04). 
  71. ^ OOSMOS页面そん档备份そん互联网档あん
  72. ^ Releases · oosmos/oosmos · GitHub. GitHub. [2019-06-03]. (原始げんし内容ないようそん于2020-11-13). 
  73. ^ Panini页面そん档备份そん互联网档あん
  74. ^ PARLEY
  75. ^ Peernetic
  76. ^ PostSharp页面そん档备份そん互联网档あん
  77. ^ Pulsar页面そん档备份そん互联网档あん
  78. ^ Pulsar Design and Actors. (原始げんし内容ないようそん档于2015-07-04). 
  79. ^ Pulsar页面そん档备份そん互联网档あん
  80. ^ Pulsar documentation. (原始げんし内容ないようそん档于2013-07-26). 
  81. ^ Pykka页面そん档备份そん互联网档あん
  82. ^ Changes – Pykka 2.0.0 documentation. pykka.org. [2019-06-03]. (原始げんし内容ないようそん于2021-02-05). 
  83. ^ Termite Scheme页面そん档备份そん互联网档あん
  84. ^ Theron
  85. ^ Theron – Ashton Mason. [2018-08-29]. (原始げんし内容ないようそん于2019-03-31). 
  86. ^ Theron - Version 6.00.02 released. Theron-library.com. [2016-02-25]. (原始げんし内容ないようそん档于2016-03-16). 
  87. ^ Theron. Theron-library.com. [2016-02-25]. (原始げんし内容ないようそん档于2016-03-04). 
  88. ^ Thespian页面そん档备份そん互联网档あん
  89. ^ Quasar页面そん档备份そん互联网档あん
  90. ^ Releases · puniverse/quasar · GitHub. [2019-06-03]. (原始げんし内容ないようそん于2020-12-15). 
  91. ^ Libactor页面そん档备份そん互联网档あん
  92. ^ Actor-CPP页面そん档备份そん互联网档あん
  93. ^ Changes - actor-cpp - An implementation of the actor model for C++ - Google Project Hosting. [2012-12-02]. (原始げんし内容ないようそん于2015-11-18). 
  94. ^ S4 页面そん档备份そん互联网档あん
  95. ^ Commit History · s4/s4 · Apache. apache.org. [2016-01-16]. (原始げんし内容ないようそん档于2016-03-06). 
  96. ^ C++ Actor Framework (CAF)页面そん档备份そん互联网档あん
  97. ^ Releases · actor-framework/actor-framework · GitHub. Github.com. [2020-03-07]. (原始げんし内容ないようそん于2021-03-26). 
  98. ^ Celluloid页面そん档备份そん互联网档あん
  99. ^ celluloid | RubyGems.org | your community gem host. RubyGems.org. [2019-06-03]. (原始げんし内容ないようそん于2020-09-29). 
  100. ^ LabVIEW Actor Framework
  101. ^ Community: Actor Framework, LV 2011 revision (version 3.0.7). Decibel.ni.com. 2011-09-23 [2016-02-25]. (原始げんし内容ないようそん于2016-10-13). 
  102. ^ National Instruments SLA页面そん档备份そん互联网档あん
  103. ^ LabVIEW Messenger Library页面そん档备份そん互联网档あん
  104. ^ Otavia. [2024-02-13]. (原始げんし内容ないようそん于2024-01-10). 
  105. ^ Orbit页面そん档备份そん互联网档あん
  106. ^ Releases · orbit/orbit · GitHub. GitHub. [2019-06-03]. 
  107. ^ QP Real-Time Embedded Frameworks & Tools - Browse Files at. Sourceforge.net. [2019-06-03]. (原始げんし内容ないようそん于2021-02-24). 
  108. ^ libprocess页面そん档备份そん互联网档あん
  109. ^ SObjectizer页面そん档备份そん互联网档あん
  110. ^ Releases · Stiffstream/sobjectizer · GitHub. GitHub. [2022-05-11]. (原始げんし内容ないようそん于2020-10-19). 
  111. ^ rotor页面そん档备份そん互联网档あん
  112. ^ Releases · basiliscos/cpp-rotor· GitHub. GitHub. [2022-05-17]. (原始げんし内容ないようそん于2020-09-15). 
  113. ^ Orleans页面そん档备份そん互联网档あん
  114. ^ Releases · dotnet/orleans · GitHub. GitHub. [2022-09-21]. (原始げんし内容ないようそん于2020-12-04). 
  115. ^ Skynet页面そん档备份そん互联网档あん
  116. ^ Reactors.IO页面そん档备份そん互联网档あん
  117. ^ libagents页面そん档备份そん互联网档あん
  118. ^ Proto.Actor页面そん档备份そん互联网档あん
  119. ^ FunctionalJava页面そん档备份そん互联网档あん
  120. ^ FunctionalJava releases. GitHub. [2018-08-23]. (原始げんし内容ないようそん于2021-01-15). 
  121. ^ Riker页面そん档备份そん互联网档あん
  122. ^ Comedy页面そん档备份そん互联网档あん
  123. ^ VLINGO XOOM Actors. [2021-01-15]. (原始げんし内容ないようそん于2020-11-29). 
  124. ^ wasmCloud. [2023-07-02]. (原始げんし内容ないようそん于2023-07-02). 
  125. ^ ray页面そん档备份そん互联网档あん
  126. ^ DOTNETACTORS. [2022-12-23]. (原始げんし内容ないようそん于2022-12-24). 
  127. ^ go-actor. [2022-12-23]. (原始げんし内容ないようそん于2022-12-23). 
  128. ^ Sento. [2022-12-23]. (原始げんし内容ないようそん于2023-04-05). 
  129. ^ Xcraft Goblins. [2022-12-23]. (原始げんし内容ないようそん于2023-06-07). 
  130. ^ Tarant. [2023-07-02]. (原始げんし内容ないようそん于2023-05-27). 
  131. ^ Armstrong, Joe. Erlang. Communications of the ACM. September 2010, 53 (9): 68–75 [2020-05-07]. doi:10.1145/1810891.1810910. (原始げんし内容ないようそん于2020-06-09). Erlang is conceptually similar to the occam programming language, though it recasts the ideas of CSP in a functional framework and uses asynchronous message passing instead of the synchronous message passing in CSP. 
  132. ^ Carl Hewitt. The repeated demise of logic programming and why it will be reincarnated. What Went Wrong and Why: Lessons from AI Research and Applications. Technical Report SS-06-08. AAAI Press. March 2006.
  133. ^ Milner, Robin. Elements of interaction. Communications of the ACM. 1993, 36: 78–89. doi:10.1145/151233.151240. 
  134. ^ How Twitter Is Scaling « Waiming Mok's Blog. Waimingmok.wordpress.com. 2009-06-27 [2012-12-02]. (原始げんし内容ないようそん于2021-02-05). 
  135. ^ "Actor-Based Programming with the Asynchronous Agents Library页面そん档备份そん互联网档あん)" MSDN September 2010.

延伸えんしん阅读

编辑

外部がいぶ链接

编辑