儿童正常退出的主管回电

时间:2011-01-12 18:51:10

标签: erlang otp

我正在创建一个测试应用程序,其中有一个使用simple_one_for_one策略的主管,并且动态添加了许多工作子项。如何在主管中实现回调(或接收消息),当孩子正常退出时会被调用?

主要目标是通知其他流程所有受监督的工作流程已完成,并且是时候显示最终报告。

如何设计这种行为?我应该创建自己的组合supervisor和gen_server的行为,还是有办法用标准的otp行为来做到这一点?

1 个答案:

答案 0 :(得分:1)

有两种方法可以进行此类通知。首先是从一开始就监控孩子。通过使用erlang:monitor / 2,第三方可以判断进程是否处于活动状态。当受监视的进程终止时,结果将变为一条消息,告知监视进程的原因。

另一种方法可能是在进程'terminate / 2函数中使用一些消息发送(如果是gen_fsm则终止/ 3)。这更加脆弱,因为在所有情况下都不会调用terminate函数。

显示器选项非常优越。