2017-12-20 13 views
2

응용 프로그램 시작시 GenServer를 시작해야하지만 해당 PID는 Genserver를 호출하고 전송해야합니다. 어떻게 응용 프로그램의 나머지 부분에서 향후 사용을 위해 그것을 얻을 수 있습니다.나중에 사용할 수 있도록 GenServer의 pid 저장

+3

명명 된'GenServer' 생성 방법은 무엇입니까? 'GenServer.start_link/3'의': name' 옵션을보십시오. – Dogbert

+2

'PID'를 저장하는 것은 일반적으로 좋은 생각이 아닙니다. 왜냐하면'PID'는 충돌을 견디지 못하기 때문에'name'은 충돌합니다. – mudasobwa

+0

@ 도그 버트 감사합니다. 사용합니다 : 이름 –

답변

7

관리자가 GenServer를 죽이고 다시 시작하면 새 pid가 수신되고 "저장된"사람은 더 이상 유효하지 않으므로 GenServer에 액세스 할 수 없습니다.

def get_state do 
    GenServer.call(:your_genserver_name, {:get_state}) 
    end 

은 자세한 내용은 문서의 this 부분을 참조하시기 바랍니다 : 같은

{:ok, _} = GenServer.start_link(MyApp, [:hello], name: :your_genserver_name)

그런 다음 통화/캐스트가 보일 것이다 : 여기에 이름을 사용해야하는 이유이다.

+0

고마워요. 윌 이름을 사용합니다 –

+0

그래. 감사합니다 –

+0

감사합니다. 행운을 빕니다. – Kociamber