2013-09-26 47 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