2

我正在创建一个测试应用程序,其中一位主管采用 simple_one_for_one 策略,许多工人孩子动态添加到其中。如何在主管中实现子进程正常退出时将调用的回调(或接收消息)?

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

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

4

1 回答 1

1

有两种方法可以发出这样的通知。第一种是从一开始就简单地监视孩子。通过使用 erlang:monitor/2,第三方可以判断进程是否处于活动状态。当被监控进程死亡时,结果将变成一条消息,将其原因提供给监控进程。

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

监视器选项要优越得多。

于 2011-01-12T20:07:05.697 回答