Erlang调用如何接收

How does Erlang call receive

我正在查找有关 Erlang 如何在内部处理接收调用的信息。

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

接收是否与其他函数在同一个线程上执行? 每个进程是否负责调用自己的接收? Erlang 是否使用调用所有接收的 "god" 进程?

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