1
我有簡單的erlang模塊,我想根據OTP原則重寫它。但我無法確定我應該使用什麼選擇模板。這種模塊應該使用哪些OTP行爲?
模塊的代碼:
-module(main).
-export([start/0, loop/0]).
start() ->
Mypid = spawn(main, loop, []),
register(main, Mypid).
loop() ->
receive
[Pid, getinfo] -> Pid! [self(), welcome],
io:fwrite("Got ~p.~n", [Pid]),
// spawn new process here
loop();
quit -> ok;
X ->
io:fwrite("Got ~p.~n", [ X ]),
// spawn new process here
loop()
end.
謝謝,但接收部分應該在哪裏?或者我可以通過產生'some_fun'過程中的'?MODULE'過程來接收消息? – rdo
接收體在'gen_server'模塊中隱藏。消息接收通過回調函數 –
發生。語法很花哨,但它也很難追蹤。在真實系統中,並行化隱藏在衆所周知的行爲(如gen_srv)中,並纏繞函數調用。 – user425720