例如,现在我有一个 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 会让我陷入困境吗?等等)?
最佳答案
无法直接使用 C 中的 OTP 行为。我也不认为您应该模仿 OTP 行为来直接使用它们。
您应该首先使用 RPC,然后根据您的性能要求测试您的代码。如果需要,您可以随时向您的 gen_event 进程发送一条简单消息,使其通过其 handle_info/2 方法通知自己。
关于event-handling - 我可以在 C 节点中获得 Erlang OTP 行为吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4749693/