我们可以与创建的 erl_nif 线程和正常的 erlang 进程进行通信吗?我们可以使用nif_send从nif线程向erlang进程发送消息,但是nif线程可以像普通erlang进程一样从任何erlang进程接收消息吗?
不,创建的线程enif_thread_create不是 Erlang 进程,不能接收消息。
您可能试图用 NIF 实现太多目标,并且可能会考虑编写一个链接驱动程序,它可以从 Erlang 发送消息和接收消息。
或者,您可以在本机线程中使用条件变量和/或管道来等待事件,该事件将在收到您期望的消息时由模拟器调用的 NIF 函数生成。事实上,与驱动程序中的链接不同,您无法使用模拟器中的选择接口。