2013-09-26 79 views
1

我們可以用erl_nif線程創建和正常的erlang進程進行通信嗎?我們可以使用nif_send將消息從nif線程發送到erlang進程,但是nif線程可以像正常的erlang進程那樣從任何erlang進程接收消息嗎?erl_nif_thread和erlang進程通信

回答

4

不,使用enif_thread_create創建的線程不是Erlang進程,不能接收消息

你可能試圖用你的NIF實現太多,可能會考慮編寫一個linked in driver來代替,它可以發送消息並從Erlang接收消息。

或者,您可以在您的本機線程中使用條件變量和/或管道來等待一個事件,該事件將在您接收到期望的消息時由仿真器調用的NIF函數生成。事實上,與驅動程序中的鏈接不同,您不能使用the select interface from the emulator