我有一个通过串行端口实现特殊协议的 C++ 代码。代码是多线程的,内部轮询串口并做自己的循环处理。我想从 erlang 调用这个驱动程序并接收来自这个驱动程序的事件。我担心的是这个 C++ 代码是多线程的,也是有状态的,这意味着当我在驱动程序上调用某个函数时,它会在内部缓存将在驱动程序的后续调用中使用/需要的内容。我的问题是
1.NIF是否与我的其他erlang进程在同一个操作系统进程中运行,或者NIF是否在单独的操作系统进程中启动?
2.用NIF扭曲这个多线程有状态的C++代码有意义吗?
4.如果 NIF 不是正确的方法,那么让 Elrang 与这段 C++ 代码来回交谈的更好方法是什么。我也更喜欢我的 C++ 代码与我的其他 Erlang 进程位于同一个 OS 进程中,因为看起来链接驱动程序是一种选择,但不确定我的 C++ 代码的多线程性质是否可以接受模型。另外,我听说他们会搞砸 elrang 调度程序?