Erlang和Singleton的良好做法?

时间:2011-12-10 22:07:24

标签: erlang singleton

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

在应用程序内部使用已注册的进程来简化访问是否是一种好习惯? 缺点我看到,例如,你不能在一个节点内运行这样一个应用程序的多个实例。

以gui应用程序为例,其中包含管理事件的进程以及其他负责声音的进程。 制作那些2" singleton"是不错的做法。作为已注册的流程并将其称为sound:play(file_name),而不是存储pid并执行sound:play(Pid, file_name)

1 个答案:

答案 0 :(得分:9)

在注册名称下使用gen_server来完成此操作是相当常见的。您可以从同一模块中导出函数,这些函数只是执行gen_server:对相关的命名进程进行调用。

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