对我来说,他们似乎是同一件事,只是注册过程被术语"演员"伪装.
更新:
我已经看到了我的思维错误.我想我是Erlang的新手,我在他们根本不属于的地方使用演员(这个地方有反模式的名字吗?)
我经常看到使用进程注册的示例来简化示例代码(通过避免另一个函数参数).这样做的结果是新手倾向于使用过程注册(猴子看,猴子做).
他们(新手)倾向于将注册更改为正常运营的一部分.他们倾向于构造原子以注册为,并且有其他过程构造原子来查找过程.当你这样做,那么你有共享状态并发(有限,但仍然很糟糕).
注册表应该用于(好吧,这些是我自己的规则,何时使用它们):
注册的名称应该有一个前缀(通常是应用程序名称),长时间运行的应用程序应该在OTP .app文件中.
已注册的进程是进程ID(Pid)的全局标识符,它本身就是一种处理进程的全局方式(事先未知).
然而,说使用全局标识符与全局变量相同将问题完全混淆了很多.它类似于'URIs是全局变量'之类的东西.在范围,可变性,封装和数据隔离方面存在根本差异,这使得它们真正不同.
请注意,actor模型是关于并发计算的一般概念.Erlang进程只是实现actor模型的许多潜在方法之一.Scala,E,Axum和许多其他语言都支持使用actor编程,但实现方式却截然不同.