本例将《Erlang程序设计》代码中的单个文件拆分成两个文件(Server/Client),便于理解。
%%进程间通信Demo,Server端
-module(server).
-export([loop/0]).
loop() ->
receive
{From, {rectangle, Width, Height}} ->
From ! {self(),Width * Height},
loop();
{From, {square, Side}} ->
From ! {self(),Side * Side},
loop();
{From, Other} ->
From ! {self(),{error,Other}},
loop()
end.
%%进程间通信Demo,Client端
-module(client).
-export([rpc/2]).
rpc(Pid,Request) ->
Pid ! { self(), Request },
receive
{Pid, Response} ->
Response
end.
%%编译
1> c(server).
{ok,server}
2> c(client).
{ok,client}
%%创建进程并调用loop函数
3> Pid = spawn(fun server:loop/0).
或
3> Pid = spawn(server,loop,[]).
<0.46.0>
%% 给Server进程发送消息
4> client:rpc(Pid,{square,25}).
625