为什么在erlang中使用'monitor'选项:spawn_opt被禁用?

时间:2012-09-13 08:26:29

标签: process erlang monitor spawn

我碰巧读到有关spawn_opt monitor的{​​{1}}:http://www.erlang.org/doc/man/erlang.html#spawn_opt-2

但是当我使用它时,我得到了这个:

1> gen_server:start(some_module, [], [{spawn_opt, [monitor]}]).
** exception error: bad argument
     in function  proc_lib:check_for_monitor/1 (proc_lib.erl, line 182)
     in call from proc_lib:spawn_opt/4 (proc_lib.erl, line 161)
     in call from proc_lib:start_link/5 (proc_lib.erl, line 317)
2> 

这就是来自OTP的proc_lib.erl第182行周围发生的事情:

%% OTP-6345
%% monitor spawn_opt option is currently not possible to use
check_for_monitor(SpawnOpts) ->
    case lists:member(monitor, SpawnOpts) of
        true ->
            erlang:error(badarg);
        false ->
            false
    end.

monitor选项是故意禁用的,但我不明白为什么。我搜索了一下 在OTP-6345上,发现它来自发行说明,我找不到足够的信息:http://www.erlang.org/download/otp_src_R11B-3.readme

我们一直手动执行spawn-then-monitor步骤而没有任何问题,但为什么OTP代码选择完全忽略monitor选项?是否有潜在的竞争 条件或任何其他陷阱?

1 个答案:

答案 0 :(得分:2)

修复与this email有关,proc_lib和monitor的功能似乎有些重叠,这搞砸了这个。

相关问题