參與者模式

計算機科學中,參與者模式英語:Actor model)是一種並行運算上的模型。“參與者”是一種程式上的抽象概念,被視為並行運算的基本單元:當一個參與者接收到一則訊息,它可以做出一些決策、建立更多的參與者、傳送更多的訊息、決定要如何回答接下來的訊息。參與者模式在1973年於Carl Hewitt、Peter Bishop及Richard Steiger的論文中提出

基本概念,使用參與者模式編程,早期參與者模式程式語言,後期參與者模式程式語言,參與者模式庫及框架,

基本概念

參與者模型推崇的哲學是“一切皆是參與者”,這與面向對象編程的“一切皆是對象”類似,但是面向對象編程通常是順序執行的,而參與者模型是並行執行的。
參與者是一個運算實體,回應接受到的訊息,同時並行的:
  • 傳送有限數量的訊息給其他參與者;
  • 創建有限數量的新參與者;
  • 指定接受到下一個訊息時的行為。
以上操作不含有順序執行的假設,因此可以並行進行。
傳送者與已經傳送的訊息解耦,是參與者模型的根本優勢。這允許進行異步通信,同時滿足訊息傳遞的控制結構。
訊息接收者是通過地址區分的,有時也被稱作“郵件地址”。因此參與者只能和它擁有地址的參與者通信。它可以通過接受到的信息獲取地址,或者獲取它創建的參與者的地址。
參與者模型的特徵是,參與者內部或之間進行並行計算,參與者可以動態創建,參與者地址包含在訊息中,互動只有通過直接的異步訊息通信,不限制訊息到達的順序。

使用參與者模式編程

一些程式語言使用了參與者模型或變種。這些語言包括:

早期參與者模式程式語言

  • Act 1, 2 and 3
  • Acttalk
  • Ani
  • Cantor
  • Rosette

後期參與者模式程式語言

參與者模式庫及框架

參與者模式庫及框架,允許用戶在沒有那隻參與者模式的語言中進行編程。這些框架包括
名稱狀態最後發布軟體許可證語言
活躍
2013-05-30
Java
Actor Framework
活躍
2013-11-13
Apache 2.0
.NET
Akka (toolkit)
活躍
2014-03-26
Apache 2.0
Java and Scala
Akka.NET
活躍
2014-02-01
Apache 2.0
.NET
Remact.Net
活躍
2014-03-23
.NET
Ateji PX
活躍
?
?
Java
F# MailboxProcessor
活躍
same as F# (built-in core library)
Apache License
F#
Korus
活躍
2010-02-01
GPL 3
Java
Kilim
活躍
2011-10-13
Java
ActorFoundry(based on Kilim)
活躍?
2008-12-28
?
Java
ActorKit
活躍
2011-09-14
Objective-C
Cloud Haskell
活躍
2012-11-07
Haskell
CloudI
活躍
2014-02-02
Erlang, C/C++, Java, Python, Ruby
NAct
活躍
2012-02-28
LGPL 3.0
.NET
Retlang
活躍
2011-05-18
New BSD
.NET
活躍
2013-01-22
Java
Jetlang
活躍
2012-02-14
New BSD
Java
Haskell-Actor
活躍?
2008
New BSD
Haskell
GPars
活躍
2012-12-19
Apache 2.0
Groovy
PARLEY
活躍?
2007-22-07
GPL 2.1
Python
活躍
2013-06-30
New BSD
Python
活躍
2013-07-19
Clojure
Pykka
活躍
2013-07-15
Apache 2.0
Python
Termite Scheme
活躍?
2009
Scheme (Gambit implementation)
Theron
活躍
2012-08-20
C++
活躍
2013-07-19
Java
Libactor
活躍?
2009
GPL 2.0
C
Actor-CPP
活躍
2012-03-10
GPL 2.0
C++
活躍
2011-11-28
Apache 2.0
Java
C++ Actor Framework (CAF)
活躍
2014-07-23
Boost Software License 1.0andBSD 3-Clause
C++11
Celluloid
活躍
2012-07-17
Ruby
LabVIEW Actor Framework
活躍
2012-03-01
?
LabVIEW
QP frameworks for real-time embedded systems
活躍
2012-09-07
GPL 2.0and commercial (dual licensing)
C and C++
libprocess
活躍
2012-07-13
Apache 2.0
C++
SObjectizer
活躍
2014-07-01
New BSD
C++
注意這裡沒有列出全部框架和庫。

相關詞條

熱門詞條

聯絡我們