【问题标题】:What is the difference between Ports and RPC for Erlang?Erlang 的 Ports 和 RPC 有什么区别?
【发布时间】:2013-03-18 09:31:00
【问题描述】:

从 Erlang 的角度来看,它们都是 erlang 与外部世界交流的方式

那么有什么区别,哪个性能更好?

【问题讨论】:

    标签: erlang


    【解决方案1】:

    顾名思义,rpc(远程过程调用)是一种在远程节点上调用函数(并获取结果)的构造。

    端口(在 Erlang 中)只是一个通信点,甚至(不一定)到远程节点。您使用端口,例如,与另一个(非 Erlang)程序通信。

    这两种构造都有不同的用途。没有人更好,他们只是不同。如果您愿意,rpc 的抽象级别比端口更高,但这并不会让它变得更好或更糟。

    【讨论】:

    • @why 不是一个更高的抽象层。 rpc 虽然是 NIF,但其行为类似于 函数调用,而端口的行为类似于 进程。 rpc 是顺序的和阻塞的,而端口是并发的和非阻塞的。它会告诉你什么时候会使用一个而不是另一个。
    • 你是对的。然而,有些人将同步函数调用视为更高的抽象,因为并发是一个令人讨厌的抽象细节。
    • 考虑到并发性是 Erlang 的全部内容,当然还有容错性。
    • :-) 但是抽象不是关于某些东西是适用/可行的,而是要省略某些东西。
    • 是的,但是你不能抽象出并发,只能抽象出围绕并发的包装。并发性或缺乏性将影响大多数其他抽象及其有效性和应用。并发系统的行为不像顺序系统,rpc 不等同于函数调用,尽管有些人希望它们如此。 Grrrr :-)
    猜你喜欢
    • 2018-02-18
    • 1970-01-01
    • 2021-10-12
    • 2010-09-09
    • 2010-12-23
    • 2019-08-25
    • 2013-10-21
    • 2018-10-27
    相关资源
    最近更新 更多