Erlang如何接听电话

时间:2016-12-02 02:30:44

标签: multithreading erlang message-passing

我正在寻找有关Erlang如何内部处理接收呼叫的信息。

report(Count) ->
    receive
        X -> io:format("Received #~p: ~p~n", [Count, X]),
    end.

接收是否在与其他功能相同的线程上执行? 每个过程都有责任自己接听吗? Erlang是否使用了#34;上帝"调用所有接收的进程?

1 个答案:

答案 0 :(得分:4)

在接收语句之后,进程首先检查邮箱中是否有与其中一个receive子句匹配的消息。如果不是,它进入等待状态(与调度程序的交互,但我没有详细信息)。然后,只有在邮箱中放入新邮件或者超时(后续子句)发生时,调度程序才会重新安排进程。