2

我有需要收集/计算的数据作为启动参数的工作进程。然后在重新启动时也需要这样做。我应该把初始化代码放在哪里?在主管初始化内部?还是在模块 start_link 或 init 内部?Erlang 在这方面有什么最佳实践吗?

4

1 回答 1

2

如果 gen_server 组件具有临界状态,或者无法重新计算/重新收集的状态,我通常会避免将状态保留在 gen_server 本身中。相反,我选择在外部进程/ets 表中维护状态。如果您采用这种方法,请确保 ets 表是由外部进程(您确定不会死)创建的,例如,应用程序进程 - 或 - 在 init 的 init 方法中创建 ets 表gen_server 并使用 "ets:give_away/3" 方法将其交给外部进程(当然,您需要检查表是否已经在 gen_server 的 init 方法中创建).. 否则 ets 表将被销毁当进程死亡时..

于 2010-11-15T03:30:54.317 回答