3

私はたまたまspawn_opt呼ばれたものについて読んだmonitorhttp ://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

スポーンしてからモニターする手順を常に手動で問題なく実行しますが、OTPコードがmonitorオプションを完全に無視することを選択したのはなぜですか?潜在的な競合状態またはその他のトラップはありますか?

4

1 に答える 1

2

修正はこの電子メールに関連しています。proc_lib と monitor の機能に重複があるようで、これが原因です。

于 2012-09-13T15:57:44.397 に答える