自習メモ〜プロセス名の登録
前のエントリに続いて、Erlangマニュアルをやってみました。3.3 Registered Process Namesです。
% % @see http://www.erlang.org/doc/doc-5.5.4/doc/getting_started/conc_prog.html % -module(tut16). -export([ping/1, pong/0, start/0]). ping(0) -> registerd_name ! finished, io:format("ping finished~n", []); ping(N) -> registerd_name ! {ping, self()}, receive pong -> io:format("Ping received pong~n", []) end, ping(N - 1). pong() -> receive finished -> io:format("Pong finished~n", []); {ping, Ping_PID} -> io:format("Pong received ping~n", []), Ping_PID ! pong, pong() end. start() -> register(registerd_name, spawn(?MODULE, pong, [])), spawn(?MODULE, ping, [3]).
へぇ、GLOBAL変数っぽく使えるんだ。多用すると大変そうだけど、便利だ。
上のサンプルはマニュアルそのままではなく、registerした名前が分かるよう「registerd_name」に変えてあります。ちなみに、register/2のリファレンスは以下。