gpt4 book ai didi

erlang - Erlang/OTP 中的监视器

转载 作者:行者123 更新时间:2023-12-02 03:42:14 26 4
gpt4 key购买 nike

我有关于显示器的问题。

1> Pid=spawn(fun() -> timer:sleep(500000) end).
2> exit(Pid, kill).
3> Ref=erlang:monitor(process, Pid).

4> flush().

在我的 shell 中,flush() 的输出是 {'DOWN',#Ref<0.0.0.159>,process,<0.69.0>,noproc}

我的问题是:如果进程在创建监视器之前被终止,那么 shell 为何会得到 'DOWN'消息?

最佳答案

这是一个避免竞争条件的功能。请记住,就当前进程所知,其他进程可能随时死亡。因此,它可能会在调用 erlang:monitor 之前或之后死亡,并且必须为每个监视器考虑这两种情况,这将非常麻烦。

这就是为什么监视死亡进程会给出与受监视进程死亡时收到的消息相同形式的消息。唯一的区别是退出原因始终以 noproc 形式给出。

关于erlang - Erlang/OTP 中的监视器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27424524/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com