0
这里是应用程序主代码的一部分源代码,它是管理erlang应用程序的模块。application_master.erl源代码中退出/ 1后的过量代码
348 loop_it(Parent, Child, Mod, AppState) ->
349 receive
350 {Parent, get_child} ->
351 Parent ! {self(), Child, Mod},
352 loop_it(Parent, Child, Mod, AppState);
353 {Parent, terminate} ->
354 NewAppState = prep_stop(Mod, AppState),
355 exit(Child, shutdown),
356 receive
357 {'EXIT', Child, _} -> ok
358 end,
359 catch Mod:stop(NewAppState),
360 exit(normal);
361 {'EXIT', Parent, Reason} ->
362 NewAppState = prep_stop(Mod, AppState),
363 exit(Child, Reason),
364 receive
365 {'EXIT', Child, Reason2} ->
366 exit(Reason2)
367 end,
368 catch Mod:stop(NewAppState);
369 {'EXIT', Child, Reason} -> % forward *all* exit reasons (inc. normal)
370 NewAppState = prep_stop(Mod, AppState),
371 catch Mod:stop(NewAppState),
372 exit(Reason);
373 _ ->
374 loop_it(Parent, Child, Mod, AppState)
375 end.
我的问题是:
为什么申请硕士的行为不同,当它接收{家长,终止}和{ 'EXIT',家长,原因}?
line 368是什么意思?应用程序主机必须先退出行366。
erlang的源代码中的复制粘贴错误...我从www.erlang.org下载它。 = _ = – Taotaotheripper
但是,为什么只有当应用程序主服务器收到{'EXIT',Parent,Reason}时,才会调用Mod:stop/1?我们是否应该像其他条件一样在退出前(理由)移动368线? – Taotaotheripper
如果应用程序主服务器从其父服务器中退出,那么系统中的某些事情发生了严重错误,所以我想没有任何调用来停止该节点来加速该节点的关闭。 – Lukas