2012-09-13 2 views
3

내가 읽어 일이 monitor라는 spawn_opt A : http://www.erlang.org/doc/man/erlang.html#spawn_opt-2erlang : 'spawn_opt'에서 'monitor'옵션을 사용하지 않는 이유는 무엇입니까?

을하지만 그것을 사용할 때, 나는이있어 :

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 옵션을 완전히 무시하도록 선택 했습니까? 잠재적 인 경주 조건 또는 다른 트랩이 있습니까?

답변

2

픽스는 this email과 관련이 있습니다. proc_lib 및 모니터의 기능에 일부 중복이있는 것으로 보입니다.

+0

그건 실제로 미묘하고 우리 프로그램에 진짜 문제를 일으키지 않지만, 세부 사항을 알면 좋습니다. 많은 감사합니다. – l04m33