Programming languages 在编程语言的上下文中,什么是角色模型?

Programming languages 在编程语言的上下文中,什么是角色模型?,programming-languages,actor-model,Programming Languages,Actor Model,我在Erlang actor模型、Groovy actors、Scala actor模型等上下文中看到过它。这指的是什么?我认为这是最好的总结: 演员模型采用了一切都是演员的哲学。这类似于某些面向对象编程语言使用的everything is a object哲学,但不同之处在于面向对象软件通常是按顺序执行的,而Actor模型本质上是并发的。[snip]参与者模型是关于消息传递的语义 不久前,我写了一篇文章,解释了模型的基本概念,并用JavaScript构建了一个基本的实现。从职位: 在参与者模型

我在Erlang actor模型、Groovy actors、Scala actor模型等上下文中看到过它。这指的是什么?

我认为这是最好的总结:

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

不久前,我写了一篇文章,解释了模型的基本概念,并用JavaScript构建了一个基本的实现。从职位:

在参与者模型中,一个参与者是构建应用程序结构的基础,它具有外部世界不可见的内部状态,并且通过异步消息与其他参与者交互。 如果您觉得这很像面向对象编程(OOP),那么您是对的。参与者模型可以被认为是对消息进行特殊处理的OOP:它们是异步传递的,并且由接收方同步执行

每个参与者都有一个唯一的地址,您可以通过该地址向其发送消息。处理消息时,它与参与者的当前行为相匹配;它只不过是一个函数,定义了响应消息所要采取的操作。作为对消息的响应,参与者可以:

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

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

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

重要的是要补充一点,参与者是异步的和并发的,但它们不能保证消息的顺序或时间限制(因此不能将原子事务拆分为参与者)

演员模型的使用主要适用于两种情况:

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