我可以在 C 节点中获得 Erlang OTP 行为吗?

Posted

技术标签:

【中文标题】我可以在 C 节点中获得 Erlang OTP 行为吗?【英文标题】:Can I get Erlang OTP behaviors in C Nodes? 【发布时间】:2011-06-12 14:10:42 【问题描述】:

例如,现在我有一个 C 节点(称为 CN),它连接到一个 erlang 节点(称为 EN)并使用 RPC 来使用 OTP行为。因此,要将 CN 的事件发送到 EN 上的事件管理器,我将 CN 连接到 EN 并执行

args = erl_format("[data_man, ~f, ~f]", ch.at(0), ch.at(1));
erl_rpc_to(fd, "gen_event", "notify", args);

但是,那么,我的 C 节点确实不像一个节点(即为什么要创建一个只使用远程过程调用的节点?)。

有没有办法在 C 节点中直接使用 OTP 行为?

如果没有,我是否应该深入了解 OTP 使用的消息格式并使用该格式发送消息(即,我可以欺骗 OTP 行为吗?)? 我不喜欢这个想法,我将不得不注意 OTP 等的实施变化。

我的要求有硬延迟限制,这对我选择 C ​​进程和 Erlang 之间的通信有何影响(RPC 会不会让我陷入困境?等等)?

【问题讨论】:

【参考方案1】:

没有办法直接使用 C 中的 OTP 行为。我也不认为你应该模仿 OTP 行为来直接使用它们。

您应该首先使用 RPC,然后根据您的性能要求测试您的代码。如果需要,您可以随时向您的 gen_event 进程发送一条简单的消息,使其通过其 handle_info/2 方法通知自己。

【讨论】:

以上是关于我可以在 C 节点中获得 Erlang OTP 行为吗?的主要内容,如果未能解决你的问题,请参考以下文章

Erlang:创建磁盘模式

启动远程 Erlang 节点

快速搭建rabbitmq单节点并配置使用

Erlang/OTP 消息可靠吗?消息可以复制吗?

初学者的 Erlang/OTP 行为

为啥在 Erlang 中使用 OTP?