Erlang / Erlang Advanced Interview questions
What is the difference between rpc:call and simply sending a message to a remote PID?
Sending Pid ! Msg to a remote PID is a raw, asynchronous, fire-and-forget send — you get
no return value unless the receiving process is written to reply, and you must already know that specific PID.
rpc:call/4 is a higher-level convenience built on top of message passing that packages up
"run this function on that node and hand me back the result" as a single blocking call, without needing a
running process on the other end designed to answer you.
| Raw message send | rpc:call/4 |
| Requires a target PID that already knows how to reply. | Targets an arbitrary Module:Function on any connected node. |
| Asynchronous; caller must implement its own receive/reply protocol. | Synchronous; blocks and returns the function's result directly. |
In practice, rpc:call is reached for ad hoc cross-node operations (admin tasks, debugging,
one-off queries), while application code that needs an ongoing conversation with a remote process typically
talks to a specific gen_server via its PID or a registered name instead.
More Related questions...