-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 fang@192.168.0.102 -setcookie 123
net_adm:ping(su@192.168.0.102).
nodes(). //查看其它节点名称
cd("Z:/ErlangProgram").
c(kvs).
kvs:start().
第二个终端窗口
erl -name su@192.168.0.102 -setcookie 123
//远程调用,rpc 是一个标准库的模块
rpc:call('fang@192.168.0.102',kvs,store,[weather,fine]).
rpc:call('fang@192.168.0.102',kvs,lookup,[weather]).
//计算机名字不能有其他符号