在我的应用中,我计划拥有许多工作流程,可能会花费数小时来完成工作。
我希望用户能够停止并删除工作人员。
kill/2, exit
这个过程是否可以接受?
即使它正在做一些工作(即下载文件),它会终止进程吗?
主管是否提供类似的机制来阻止和移除正在做某事的儿童?
答案 0 :(得分:1)
是否可以杀死
exit/2
这个过程?它会终止吗? 即使它正在做一些工作(即 下载文件)?
是。如您所述,为了终止流程,您可以使用exit/2
。如果将Reason
参数设置为:noraml
,OtherReason
或kill
,则终止过程会有所不同。
在Error Handling文档中对此进行了详细解释,并且对于更详细的表达式,请参阅this。
因此,您可以选择适合您应用的任何内容。
主管是否提供类似的停止和移除机制 正在做一些工作的孩子?
是。正如评论中所提到的,Erlang's Supervisor文档中有一个非常好的详细文档。我建议你仔细阅读所有内容,但是你要找的主要部分是:
child_spec()
(主要是shutdown
和restart
选项)。terminate_child/2
实际终止孩子。delete_child/2
用于在致电terminate_child/2
后删除儿童。您可以详细了解here。