退出kill / 2进程是一种常见做法吗?

时间:2016-07-18 21:50:43

标签: erlang

在我的应用中,我计划拥有许多工作流程,可能会花费数小时来完成工作。

我希望用户能够停止删除工作人员。

kill/2, exit这个过程是否可以接受? 即使它正在做一些工作(即下载文件),它会终止进程吗?

主管是否提供类似的机制来阻止和移除正在做某事的儿童?

1 个答案:

答案 0 :(得分:1)

  

是否可以杀死exit/2这个过程?它会终止吗?   即使它正在做一些工作(即   下载文件)?

是。如您所述,为了终止流程,您可以使用exit/2。如果将Reason参数设置为:noramlOtherReasonkill,则终止过程会有所不同。 在Error Handling文档中对此进行了详细解释,并且对于更详细的表达式,请参阅this
因此,您可以选择适合您应用的任何内容。

  

主管是否提供类似的停止和移除机制   正在做一些工作的孩子?

是。正如评论中所提到的,Erlang's Supervisor文档中有一个非常好的详细文档。我建议你仔细阅读所有内容,但是你要找的主要部分是:

  1. 在启动子女时定义child_spec()(主要是shutdownrestart选项)。
  2. terminate_child/2实际终止孩子。
  3. delete_child/2用于在致电terminate_child/2后删除儿童。
  4. 您可以详细了解here