我正在开发一个模拟,它将包含许多实体不断更新,可能每秒 30 次。假设我们有 1000 个实体,每个实体都有一个速度,因此每个刻度都必须更新一个位置。
那么,您将如何使用演员模型来实现这一点?我不一定在这个项目中使用 Erlang,但为了争论,我们就说我是。你会为这些实体中的每一个都有一个演员吗?或者你会有一个“经理”演员来维护和更新这些实体的列表吗?
诚然,Erlang 进程非常轻量级:你可以同时存在数十万个进程,但这并不意味着你必须这样使用它,因为你可以。例如,创建一个射击游戏,其中包括子弹在内的所有东西都是它自己的演员,这很疯狂。在这样的游戏中,你唯一能射击的就是你自己的脚。从actor到actor发送消息仍然有很小的成本,如果你将任务划分得太多,你会让事情变得更慢!
所以这似乎表明管理者会更好。还是有我没有看到的第三种选择?