应该何时使用Actor模型?
它当然不能保证无死锁的环境.
B等待A时,Actor A可以等待来自B的消息.
此外,如果演员在进入下一个任务之前必须确保其消息已被处理,则必须发送消息并等待"您的消息已被处理"消息而不是直接阻止.
模特的力量是什么?
concurrency multithreading functional-programming actor-model actor
我正在学习分布式系统课程,我们必须使用Scala制作项目.我们的讲师告诉我们,Scala在使用多个内核进行计算并使用并行性来解决问题同时与actor模型集成的意义上是好的.
这是一个理论问题.我已经学习了一些关于使用Akka的actor模型的基础知识,我的问题是,在编程时,用户是否必须向编译器提供详细信息,以便各个actor在多个内核上工作,或者Scala是否会处理它并使用多个各种演员的核心?
简而言之,我的问题是:当我们在Scala中使用Akka库声明多个actor时,Scala编译器是否会自动使用多核CPU功能在内核之间分配各种actor,或者程序员是否必须提供一些输入才能执行此操作?
在Hoare的1978年论文中,我们有一个名为Communicating Sequential Processes的想法.这由Go,Occam和core.async中的Clojure 使用.
是否可以使用CSP替代Scala中的Actor模型?(我正在看JCSP,但我想知道这是否是唯一的选择,如果它是成熟的,如果有人使用它).
编辑 - 我也看到通信Scala对象作为Scala中JCSP的替代品.但是这些似乎与真正的线程相关 - 这似乎错过了CSP的一个好处,就是要远离保持大量线程始终处于活动状态的内存资源成本.
我只想考虑Erlang对游戏服务器的可能性.(哦,我不是Erlang专家,只考虑阶段)这意味着使用Actor模型进行游戏模拟.当然,最吸引人的是它在多个节点上分布的并发性.
我目前的一个大问题是我应该如何执行碰撞检测等多角色交互.(这只是一个例子)
虽然碰撞检测在任何游戏中都是必需的,但是在Actor模型的本质中,它看起来效率不高甚至没有意义,因为它需要全局同步的状态查询和更新所有目标actor.如果我使用任何同步,它将覆盖Erlang的actor模型的所有好处.
当然,如果我正确地使用空间分区,那么一次定位演员可以更小,但这只是一个优化,而不是一个主要的答案.或者这是这个问题的正确答案吗?通过减少交互演员的数量来减少同步范围?
我在网上搜索了很长时间,找不到在Actor模型中克服的面向对象模型的具体缺点.请帮我一些指示和解释.
提前致谢.
我正在和Akka一起玩,我有一个设计,其中一个主管演员有一个孩子扮演角色A和几个孩子扮演角色B.我想定义一个监督政策,如A失败升级(终止主管)和B生成要重新启动的各个actor.
这可能吗?这是可取的吗?
我已经在Erlang演员模型,Groovy演员,Scala演员模型等上下文中的几个地方看到过它.这是指什么?
https://en.wikipedia.org/wiki/Actor_model,该项目被称为" 脉冲星 "
https://en.wikipedia.org/wiki/Reactor_pattern,项目是Twisted和Tornado
理论和实践有什么不同?
actor-model ×10
actor ×3
akka ×3
scala ×3
concurrency ×2
python ×2
asynchronous ×1
core.async ×1
erlang ×1
interaction ×1
multicore ×1
oop ×1
pykka ×1
reactor ×1
twisted ×1