[英]Erlang: Shell not returning after spawn
-module(core_profile).
-export([start/0]).
start() ->
register(eProfile, spawn(loop())),
ok.
loop() ->
receive
{Key, Pid} -> Pid ! getKey();
{name, Pid} -> Pid ! getName();
{address, Pid} -> Pid ! getAddress()
end,
loop().
這是我的代碼
當我嘗試從外殼啟動循環時,我被卡住了。
2> Pid = spawn(fun()-> a end).
<0.39.0>
3>c(core_profile.erl).
{ok, core_profile}
4>core_profile:start().
命令不應該返回OK,然后再給我下一個命令行,而不是什么也不做嗎?
當您執行spawn(loop())
將調用loop
函數以評估結果(該結果將傳遞給spawn
,因此您將進入無限循環。
代替調用函數,您必須通過執行spawn(fun loop/0)
傳遞函數引用。
spawn(Fun) -> pid()
類型:Fun = function()
將由Fun應用程序啟動的新進程的pid返回到空列表[]。
您應該編寫register(eProfile, spawn( fun()-> loop() end)),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.