Asynchronous 同机Erlang通信

Asynchronous 同机Erlang通信,asynchronous,erlang,multithreading,ipc,portability,Asynchronous,Erlang,Multithreading,Ipc,Portability,我需要回答以下问题,以帮助理解我应该采取什么方法与Erlang进行接口。SMP UNIX机箱上的AFAIK Erlang使用多进程方法。在这种情况下,它应该做相同的机器IPC Erlang是否为UNIX使用UNIX域套接字? 它是否为windows使用命名管道 如果它没有实现上述两种构造,即没有为windows命名的管道;在windows上,它必须回退到套接字 上述原则是如何实现的,它们是使用面向消息的、每个通道单线程、异步构造还是其他构造 如果我上面的推理是错误的,它是否使用主-子树和所有其他

我需要回答以下问题,以帮助理解我应该采取什么方法与Erlang进行接口。SMP UNIX机箱上的AFAIK Erlang使用多进程方法。在这种情况下,它应该做相同的机器IPC

Erlang是否为UNIX使用UNIX域套接字? 它是否为windows使用命名管道

如果它没有实现上述两种构造,即没有为windows命名的管道;在windows上,它必须回退到套接字

上述原则是如何实现的,它们是使用面向消息的、每个通道单线程、异步构造还是其他构造

如果我上面的推理是错误的,它是否使用主-子树和所有其他进程通过主-子树进行间接通信

-编辑1-

到erlang二进制格式文档

普遍的共识是Unix域套接字的性能优于。我想我会尝试扩展Erlang以使用提供的更好的原语。我还强烈怀疑TCP/IP事件循环中没有使用epol和windows IOPC—我将在审核代码后发回

另一个声明Erlang确实不支持TCP和UDP之外的任何东西

有两个Erlang库用于通信和存储


Erlang允许在Unix下打开Unix Dom套接字。

R1。它使用TCP/IP事实上,对UNIX域套接字没有任何标准支持

R2。我很确定它仍然是TCP/IP套接字

R3。见R2

R4。有一种适合Erlang的二进制交换格式,它是基于消息的。交换可以是类似于同步RPC的,也可以是异步的

R5。没有主人


作为帮助您节省时间的奖励:不要忘记使用注册名称-sname或-name来使用节点间通信(RPC或其他任何形式)。

作为对原始问题和某些注释的注释:

我非常确定,事实上我知道,在节点内部,ErlangVM不使用套接字或管道在Erlang进程之间进行通信。这将是荒谬的,完全违背了轻量级Erlang进程间通信的基本Erlang原则

在Erlang节点之间,Erlang VM使用TCP/IP。从Erlang中看到的语义和行为与节点内通信相同,在大多数方面,涉及的进程位于哪个节点上是完全透明的

SMP不会改变这些基础,无论使用了多少内核和调度程序,也不管每个内核运行多少调度程序


相关SO问题:也许我误解了这个问题,但很难相信Erlang调度器通过TCP/IP进行通信。@zed,是的,很难相信。在我对开源内容的回顾中,我看到了许多次优的IPC实现。BSD TCP/IP和select几乎是许多人程序所反对的标准。如果你能找到关于调度程序的源文件或参考手册的链接,我将不胜感激。伙计们,也许我戴着有色眼镜读过这个问题:我假设的是Erlang意义上的节点间IPC,因为如果我们讨论的是节点内IPC,当然,我非常确定它不是通过TCP/IP的。每个节点都有自己的调度程序。我也不知道我们为什么在这里讨论调度器。[解释][1]Erlang使用的SMP模型,它使用单进程多线程模型。因此,从调度程序的角度来看,本地IPC不是问题。[1] :有关Erlang在节点内消息传递系统如何工作的更多详细信息: