Erlang的application中的start_phases

发布于 2014/09/25 14:57
阅读 772
收藏 0

NGINX Sprint China 2022--NGINX年度旗舰盛会,已开启免费预约!>>>

Erlang的application中有一个option是start_phases,我看其文档上写的是用来在子app中进行同步,但是始终不能理解,谁能详细说明一下吗
加载中
0
jobell
jobell
http://www.erlang.org/doc/man/app.html
0
鹰

引用来自“jobet”的评论

http://www.erlang.org/doc/man/app.html
能举例说明一下吗,这个文档我才看过的。不是很明白,所以才提问的。
0
鹰

引用来自“jobet”的评论

http://www.erlang.org/doc/man/app.html

我看了Erlang的另一个资料,以下是我的理解:

就个primary application,需要在.app中的mod选项中设置{application_starter, [Module, StartArgs]},这里面的Module依旧是application的回调模块,StartArgs依旧是Module:start的参数,只不过前面多了一个application_starter,表明它是 一个primary app,既然是primary app,那么肯定就能定义开始的阶段,于是就能在start_phases定义启动的阶段,而每一个子app,在其Module:start_phase(Phase,  StartType, PhaseArgs),将第一参数Phase,设置为primary app中定义的一个phase, 就可以在primary app的不同阶段,调用不同子app的相应阶段的函数,可以这样理解吗?

0
鹰

引用来自“jobet”的评论

http://www.erlang.org/doc/man/app.html
对了。忘记附上我看的Erlang官方资料的地址了:http://www.erlang.org/doc/design_principles/included_applications.html
0
jobell
jobell
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
jobell
jobell

给我的感觉就是在启动该应用的之后,继续启动start_phases定义的应用.

The application master will then call Module:start/2 for the primary application, followed by calls to Module:start_phase/3 for each start phase (as defined for the primary application) both for the primary application and for each of its included application, for which the start phase is defined.

0
鹰
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
鹰

引用来自“jobet”的评论

给我的感觉就是在启动该应用的之后,继续启动start_phases定义的应用.

The application master will then call Module:start/2 for the primary application, followed by calls to Module:start_phase/3 for each start phase (as defined for the primary application) both for the primary application and for each of its included application, for which the start phase is defined.

昨天有点事,所以没有及时回复,今天我写了一个demo,可以验证这样一个事实: Module:start这个函数总是最先调用,然后会先调用primary application的start_phase,其调用顺序是根据在app资源文件中定义的那样,此时,如果子app中,也有相应的函数,则也会调用,这样就起到了同步的作用。demo的地址在:  http://www.oschina.net/code/snippet_1269241_38954

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部