备忘

Erlang的supervisor

荒凉一梦 提交于 2019-12-02 10:01:50
万事皆有因 这件事情的开始是非常加单的,我想把几个模块独立化,变的可以重复使用。然后就创建了几个application,但是将几个模块整合到同一个项目的时候,犯了一个小小的错误,这个错误虽然不是很致命,但是是一个非常不好的。 产生原因 一开始,我有一个主干项目A,创建了SupervisorA。之后我创建了一个项目B,同时创建了一个SupervisorB。然后将两个项目整合的时候,我项目B中的模块X的start_link的代码如下面这样 -module(mod_x). -export([start_link/1]). start_link(opts)-> Child = {mod_y,{mod_y,start_link,[]},permanent,5000,worker,[mod_y], supervisor:start_child(supervisor_b,Child). 然后我在主干项目中的 SupervisorA的代码写成了这个样子 -module(supervisor_a). -export([start_link/0]). -export([init/1]). start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []). init([])-> RestartStrategy = {one_for