有人可以逐行解释这一点吗?
非常感谢。
run() ->
Pid = spawn(fun ping/0),
Pid ! self(),
receive
pong -> ok
end.
ping() ->
receive
From -> From ! pong
end.
有人可以逐行解释这一点吗?
非常感谢。
run() ->
Pid = spawn(fun ping/0),
Pid ! self(),
receive
pong -> ok
end.
ping() ->
receive
From -> From ! pong
end.
逐行:
run() ->
声明函数run/0
Pid = spawn(fun ping/0),
使用初始化函数生成新进程ping/0
并将其 pid 存储到变量中Pid
Pid ! self(),
将包含当前进程的 pid(self/0
调用结果)的消息发送到 pid 存储在变量中的进程Pid
receive
等待一条消息(如果有 after 子句,则等待一段时间)
pong -> ok
如果有收到消息pong,返回值ok
end.
子句和点结束receive
也意味着函数结束run/0
ping() ->
声明函数ping/0
receive
等待消息...
From -> From ! pong
收到任何东西时,将其存储在变量中From
,然后将消息发送pong
到由值确定的进程From
(在这种情况下是进程执行run/0
函数的pid)
end.
接收结束和ping/0
功能