2012-11-19 51 views
0

實現一個過程的最常規方式是什麼?只應該完成工作並退出?如何在Erlang/OTP中實現臨時工人

在我的情況下,這些工作人員由simple_one_for_one監督員監督。我在尋找周圍,但沒有發現任何東西不僅僅是spawn_link更好:

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

然而,這種方式似乎並沒有成爲良好的OTP設計。

任何想法?

+0

是否有erlang語法突出顯示? – citxx

回答

4

這實際上是一個體面的方式,只要確保您使用的是proc_lib:spawn_link(...)而不是erlang:spawn_link(...)(用於存儲監督樹遍歷的祖先以及更詳細的錯誤日誌)。

,當然,你可能想爲設定temporarytransient,這取決於你打算在工人失敗的情況下做(重新啓動工人什麼所有工人重新開始策略,並嘗試再次做的工作或者在任何失敗的情況下丟棄工作)。