Вот пример трассировки, где я могу вызвать erlang:monitor/2
для того же Pid:
1> Loop = fun F() -> F() end.
#Fun<erl_eval.30.99386804>
2> Pid = spawn(Loop).
<0.71.0>
3> erlang:monitor(process, Pid).
#Ref<0.2485499597.1470627842.126937>
4> erlang:monitor(process, Pid).
#Ref<0.2485499597.1470627842.126942>
5> erlang:monitor(process, Pid).
#Ref<0.2485499597.1470627842.126947>
Выражения, возвращаемые инструкцией № 4 и № 5, отличаются от выражения № 3, что означает возможность создания нескольких ссылок на монитор между текущим процессом и Pid
. Есть ли практический случай, когда вам нужно или использовать несколько ссылок монитора на один и тот же процесс?
Я ожидаю, что это вернет ту же ссылку (возврат новой, возможно, будет означать, что старая не удалась/разбился), следуя той же логике, которая существует для link/1
.