-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().
这是我的代码
当我尝试从shell开始循环时,我卡住了。
2> Pid = spawn(fun()-> a end).
<0.39.0>
3>c(core_profile.erl).
{ok, core_profile}
4>core_profile:start().
该命令不应该返回ok然后给我下一个命令行,而不是什么都不做?
答案 0 :(得分:4)
执行spawn(loop())
时,调用loop
函数来评估结果(将传递给spawn
,因此您将进入无限循环。
不是调用函数,而是必须通过spawn(fun loop/0)
传递函数引用。
答案 1 :(得分:0)
spawn(Fun) -> pid()
类型: Fun = function()
将Fun应用程序启动的新进程的pid返回到空列表[]。
你应该写register(eProfile, spawn( fun()-> loop() end)),