0

什么是实现流程的最常规方式,它只应该完成它的工作并退出?

就我而言,这些工人由simple_one_for_one主管监督。我四处寻找,但没有找到比这更好的东西spawn_link

work(Args) ->
{ok, spawn_link(fun() ->
    ... do_the_necessary_work ...
end)}.

然而,这种方式似乎不是好的 OTP 设计。

有任何想法吗?

4

1 回答 1

4

这实际上是一种不错的方式,只需确保您使用proc_lib:spawn_link(...)而不是erlang:spawn_link(...)(存储祖先以进行监督树遍历,以及更详细的错误日志)。

而且,当然,您可能希望将所有工作人员的重启策略设置为temporarytransient,这取决于您在工作人员失败时要做什么(重新启动工作人员并尝试再次执行该工作或丢弃该工作以防万一任何故障)。

于 2012-11-19T08:53:16.423 回答