3

たとえば、現在、erlang ノード ( ENと呼びます) に接続し、RPC を使用して OTP 動作を使用する C ノード ( CNと呼びます) があります。したがって、CNからENのイベント マネージャにイベントを送信するには、 CNENに接続して次のようにします。

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 は私を行き詰まらせますか? など)?

4

1 に答える 1

4

CのOTP動作を直接使用する方法はありません。また、OTP動作を模倣して直接使用する必要はないと思います。

最初にRPCを使用してから、パフォーマンス要件に対してコードをテストする必要があります。必要に応じて、いつでもgen_eventプロセスに簡単なメッセージを送信して、handle_info/2メソッドを介して自身に通知することができます。

于 2011-01-22T23:30:42.120 に答える