1.Erlang很容易实现RPC调用,让我们来一起看一看,话不多说,先上代码:
start() ->
spawn(rpc03,loop,[]).
这里调用start方法创建了一个进程,解释一下这三个参数的意思:
rpc03:一个模块,类似Golang的import导入;这里表示给哪一个模块创建进程
loop:表示创建进程后运行的进程函数,类似C++11的std::thread方法调用的线程函数
[ ] :表示不给loop函数传参数
2.OK,我们来实现loop方法,上代码:
loop() ->
receive
{Client,{hello}} ->
Client ! {self(),{ok,hearing}},
loop();
{Client,_} ->
Client ! {self(),{no,error}},
loop()
end.
3.接下来实现RPC调用模块
rpc(Pid,Request) ->
Pid ! {self(),Request},
receive
{Pid,Response} ->
Response
end.
4.开始测试
erlc .\rpc03.erl
erl
Eshell V11.0 (abort with ^G)
1> Pid = rpc03:start().
<0.80.0>
2> rpc03:rpc(Pid,{hello}).
{ok,hearing}
3> rpc03:rpc(Pid,{helloworld}).
{no,error}