Erlang 和 Singleton 的好习惯?

标签 erlang singleton

由于 Erlang 不是真正面向对象的,因此没有真正的单例类,但我猜
已注册的进程可以作为一个进程使用。

在应用程序内部使用注册进程以使访问更容易是一种好习惯吗?
缺点我看到,例如,您不能在一个节点内运行多个此类应用程序的实例。

以一个 gui 应用程序为例,它有一个进程管理事件和其他一些负责声音的进程。
将这两个“单例”作为注册进程并将它们称为 sound:play(file_name) 是否是一种好习惯?而不是存储 pid 并执行 sound:play(Pid, file_name) ?

最佳答案

使用注册名称下的 gen_server 来执行此操作是相当普遍的。您可以从同一个模块中导出函数,这些函数只需对有问题的命名进程执行 gen_server:call 即可。

(可以说,Erlang 比您可能习惯的更“真正”的 OO。但这不是这个问题的意义所在。)

关于Erlang 和 Singleton 的好习惯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8460281/

相关文章:

class - 项目中有太多的单例 - 这是一种不好的做法吗?

ios - 我应该子类化还是使用类别

swift - 有什么理由不在 Swift 中使用单例 "variable"?

erlang - 何时到 "let it crash"以及何时捍卫 Erlang 中的代码?

extjs - ExtJs4 中的单例

具有接受参数的构造函数的 C# 单例

Erlang 热代码加载

erlang - 在try catch block 中没有尾部递归代码?

javascript - 跨平台 AES 256 GCM Javascript 和 Elixir

memory-management - Elixir/Erlang 如何管理函数调用中传递的变量的内存?