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