1

有人可以逐行解释这一点吗?

非常感谢。

run() ->
        Pid = spawn(fun ping/0),
        Pid ! self(),
        receive
                pong -> ok
        end.
ping() ->
        receive
                From -> From ! pong
        end.
4

1 回答 1

6

逐行:

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功能

于 2013-06-02T15:09:29.523 回答