2013-09-26 2 views
1

생성 된 erl_nif 스레드 및 일반 오류 프로세스와 통신 할 수 있습니까? 우리는 nif_send를 사용하여 nif 쓰레드에서 erlang 프로세스로 메시지를 보낼 수 있지만 일반적인 쓰레드 프로세스처럼 어떤 쓰레기 처리 프로세스로부터 메시지를받을 수 있습니까?erl_nif_thread 및 erlang 프로세스 통신

답변

4

아니요, enif_thread_create으로 생성 된 스레드는 Erlang 프로세스가 아니며 메시지를 수신 할 수 없습니다.

NIF로 너무 많은 것을 얻으려는 것일 수도 있고, 대신 linked in driver을 작성하여 얼랭에서 메시지를 보내고 메시지를받을 수도 있습니다.

또는 네이티브 스레드의 조건부 변수 및/또는 파이프를 사용하여 예상되는 메시지가 수신 될 때마다 에뮬레이터에서 호출 된 NIF 함수에 의해 생성되는 이벤트를 기다릴 수 있습니다. 드라이버에 링크 된 것과 달리 실제로는 the select interface from the emulator을 사용할 수 없습니다.