-module(kvs).
-export([start/0,store/2,lookup/1]).
%分布式编程
start()->register(kvs,spawn(fun()->loop() end)).
store(Key,Value)->rpc({store,Key,Value}).
lookup(Key)->rpc({lookup,Key}).
rpc(Q)->
kvs ! {self(), Q},
receive
{kvs,Reply}->
Reply
end.
loop()->
receive
{From,{store,Key,Value}}->
put(Key,{ok,Value}),
From ! {kvs,true},
loop();
{From,{lookup,Key}}->
From ! {kvs,get(Key)},
loop()
end.
%调用
%c(kvs).
%kvs:start().
%kvs:store({location,joe},"Stockholm").
启动两个终端窗口
第一个终端窗口
erl -name [email protected] -setcookie 123
net_adm:ping([email protected]).
nodes(). //查看其它节点名称
cd("Z:/ErlangProgram").
c(kvs).
kvs:start().
第二个终端窗口
扫描二维码关注公众号,回复:
3744622 查看本文章
erl -name [email protected] -setcookie 123
//远程调用,rpc 是一个标准库的模块
rpc:call('[email protected]',kvs,store,[weather,fine]).
rpc:call('[email protected]',kvs,lookup,[weather]).
//计算机名字不能有其他符号