¤â¤·¤¯¤Ï»ä¤ÎƬ¤ÎÃæ¤Î°ìÉô

³µÍ×

Erlang¤Î¥×¥í¥»¥¹¤Ë¤Ä¤¤¤Æ³Ø½¬¤·¤¿¤³¤È¤Î¤Þ¤È¤á

¥×¥í¥»¥¹1¸Ä

  • person¥×¥í¥»¥¹(Name¤ÈAge¤òÊÝ»ý)¤È¤ä¤ê¤È¤ê¤¹¤ë¡£
    • ¼ç¥×¥í¥»¥¹¢«(rpc)¢ªperson
start() ->
Pperson = spawn(?MODULE, person, [{"Taro", 25}]),
{name, Name} = rpc(Pid, name),
io:format("name: ~p~n",[Name]),
{age, Age} = rpc(Pid, age),
io:format("age: ~p~n",[Age]).

rpc(Pid, Msg) ->
Pid ! {self(), Msg},
receive
{Pid, Ans} -> Ans
after 1000 -> void
end.

person({Name, Age}) ->
receive
{From, name} ->
io:format("person: got msg name~n",[]),
From ! {self(), {name, Name}},
person({Name, Age});
{From, age} ->
io:format("person: got msg age~n",[]),
From ! {self(), {age, Age}},
person({Name, Age})
end.

¥×¥í¥»¥¹2¸Ä(¤½¤Î1)

  • ¼ç¥×¥í¥»¥¹¤Ïworker¥×¥í¥»¥¹¤È¤ä¤ê¤È¤ê¤¹¤ë¡£
    worker¤Ïperson¤È¤ä¤ê¤È¤ê¤¹¤ë¡£
    • ¼ç¥×¥í¥»¥¹¢«(rpc1)¢ªworker¢«(rpc2)¢ªperson
person,rpc¤Ï¾å¤ÈƱ¤¸¡£
start2() ->
Pperson = spawn(?MODULE, worker, [{"Jiro", 22}]),
{name, Name} = rpc(Pid, name),
io:format("name: ~p~n",[Name]),
{age, Age} = rpc(Pid, age),
io:format("age: ~p~n",[Age]).

worker({Name, Age}) ->
Pperson = spawn(?MODULE, person, [{Name, Age}]),
worker2(Pperson).

worker2(Pperson) ->
receive
{From, name} ->
io:format("worker: got msg name~n",[]),
{name, Name} = rpc(Pperson, name),
From ! {self(), {name, Name}},
worker2(Pperson);
{From, age} ->
io:format("worker: got msg age~n",[]),
{age, Age} = rpc(Pperson, age),
From ! {self(), {age, Age}},
worker2(Pperson)
end.

¥×¥í¥»¥¹2¸Ä(¤½¤Î2)

  • ¼ç¥×¥í¥»¥¹¤Ïworker¥×¥í¥»¥¹¤È¤ä¤ê¤È¤ê¤¹¤ë¡£
    worker¤Ïperson¤Ë¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë¡£
    person¤Ï¼ç¥×¥í¥»¥¹¤Ë¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ë¡£
    • ¼ç¥×¥í¥»¥¹¢«(rpc2(*))¢ªworker¢ªperson¢ª(*)
start3() ->
Pworker = spawn(?MODULE, worker, [{"Saburo", 20}]),
{name, Name} = rpc2(Pworker, {name, self()}),
io:format("start3: name: ~p~n",[Name]).

rpc2(Pid, Msg) ->
Pid ! Msg,
receive
Ans -> Ans
after 1000 -> void
end.

worker({Name, Age}) ->
Pperson = spawn(?MODULE, person, [{Name, Age}]),
worker2(Pperson).

worker2(Pperson) ->
receive
{name, To} ->
io:format("worker: got msg name2 ~n",[]),
Pperson ! {name, To},
worker2(Pperson);
end.

person({Name, Age}) ->
receive
{name, To} ->
io:format("person: got msg name2~n",[]),
To ! {name, Name},
person({Name, Age})
end.

¥³¥á¥ó¥È¤ò¤«¤¯


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

Menu

¥á¥Ë¥å¡¼¥µ¥ó¥×¥ë2

³«¤¯¥á¥Ë¥å¡¼

ÊĤ¸¤ë¥á¥Ë¥å¡¼

  • ¥¢¥¤¥Æ¥à
  • ¥¢¥¤¥Æ¥à
  • ¥¢¥¤¥Æ¥à
¡Ú¥á¥Ë¥å¡¼ÊÔ½¸¡Û

´ÉÍý¿Í/Éû´ÉÍý¿Í¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹