Erlang 流程是否有办法发现它';她在二郎成了孤儿?

Erlang 流程是否有办法发现它';她在二郎成了孤儿?,erlang,Erlang,例如 p是否有办法在make_Orphant返回后的某个时间接收消息?或者P注定会永远困扰系统(使用宝贵的资源),除非它自己退出?将P传送到某个进程的某个地方,以某种方式注册P(注册、全局、gproc、pg2、某些自制解决方案等),让某人监视它,等等。当然,有几种方法。但OTP程序的一个基本原则是,每个进程都属于某个地方的一个监督树,因此这就不太成问题了 除非你正在建模一个完全不符合OTP假设的系统(如细胞自动机中的对等监控),否则你永远都不想为孤儿创造生存的机会。孤立进程相当于内存泄漏——这从

例如


p是否有办法在make_Orphant返回后的某个时间接收消息?或者P注定会永远困扰系统(使用宝贵的资源),除非它自己退出?

将P传送到某个进程的某个地方,以某种方式注册P(注册、全局、gproc、pg2、某些自制解决方案等),让某人监视它,等等。当然,有几种方法。但OTP程序的一个基本原则是,每个进程都属于某个地方的一个监督树,因此这就不太成问题了

除非你正在建模一个完全不符合OTP假设的系统(如细胞自动机中的对等监控),否则你永远都不想为孤儿创造生存的机会。孤立进程相当于内存泄漏——这从来都不是一件好事


有关编写OTP进程与原始Erlang进程的一些含义的背景信息,您更容易泄漏进程,请阅读并了解。

一种简单的方法:

在make_Orphant返回后的某个时间收到消息

她和一个女孩在一起


当父级死亡时,p将获得一条
{'DOWN',Ref,process,Parent,Reason}
消息。即使调用Parent exits before,消息也会包含重新泄漏的原因:是的,这就是为什么这会有用的原因。这个过程可以是这样的:“没有人会再要求我做任何事情,因为没有人有办法称呼我。”。如果没有孤立检测,您必须小心退出每个进程,这非常烦人,而且似乎容易出错。监督似乎没有什么帮助:监督者重新启动流程,而不是退出流程。您在第一段中提到的内容不会告诉您流程已无法访问。其中一些东西可以确保它始终是可访问的(例如,注册)。@AllYourCodeSupervisors确实会终止进程。花一些时间编写一些玩具OTP应用程序,并与doc diving或阅读LYSE可能会有所启发。到目前为止,我只见过用于重新启动进程的主管。只有在主管本身关闭时,才能关闭。@所有代码继续阅读。。。此外,您可能不熟悉这一点,它来自Erlang /OTP文档(经常引用的有用的东西):认为孩子可能是监督者,不同类型的监管者可以处理不同类型的子流程监控场景……我认为只有在父母不长寿的情况下才有效。为什么会这样?监视器不会“过期”。
make_orphan() ->
  P = spawn(...),
  ok
.
make_orphan() ->
  Parent = self(),
  P = spawn(fun() -> monitor(process, Parent), ... end),
  ok