有人可以逐行解释这一点吗?
非常感谢。
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功能