什么是编程语言环境中的actor模型?

时间:2009-03-21 13:38:49

标签: programming-languages actor-model

我已经在Erlang演员模型,Groovy演员,Scala演员模型等上下文中的几个地方提到过它。这是指什么?

3 个答案:

答案 0 :(得分:3)

我认为Wikipedia总结得最好:

  

演员模型采用的理念是一切都是演员。这类似于一切是一些面向对象编程语言所使用的对象哲学,但不同之处在于面向对象的软件通常是顺序执行的,而Actor模型本质上是并发的。 [snip] Actor模型是关于消息传递的语义。

答案 1 :(得分:1)

前段时间我编写了this blog post来解释模型的基本概念,并使用JavaScript构建基本实现。从帖子:

  

在Actor模型中,actor是构建应用程序结构的基础,它具有对外部世界不可见的内部状态,并通过异步消息与其他actor交互。

     

如果这听起来很像面向对象编程(OOP),那你就是对的。可以将Actor模型视为OOP,对消息进行特殊处理:它们是异步传递的,并由接收者同步执行。

     

每个actor都标有一个唯一的地址,您可以通过该地址向其发送消息。处理消息时,它将与actor的当前行为进行匹配;这只不过是一个函数,它定义了对消息作出反应的动作。在回复消息时,演员可以:

     
      
  • 创造更多演员。
  •   
  • 向其他演员发送消息。
  •   
  • 指定内部状态以处理下一条消息。
  •   

答案 2 :(得分:0)

演员模型的主要思想是将演员作为并发计算的原语进行管理。演员可以向其他演员发送消息,接收消息并对消息做出反应并产生新的演员。

这里的主要思想是通过消息进行通信,而不是在不同线程之间共享内存。

重要的是要添加Actor是异步并发,但是它们不能保证消息的顺序或时间限制采取行动(因此原子交易不能拆分为参与者)。

Actor模型的使用主要适用于以下两种情况:

  • 在可以将您的解决方案分解为一组独立的任务时。
  • 当您可以将解决方案分解为由 清晰的工作流程。

插图:

enter image description here