Erlang进程发送消息

Erlang进程发送消息,erlang,Erlang,我知道Erlang进程消息是同步的。 当我这样做的时候 Pid!信息 发送消息线程立即返回 发送消息线程将确认消息已放入Pid的消息队列,然后返回 发送消息线程将做哪些选择?我相信您的理解可能是错误的。Erlang消息传递是异步的。 比如看一看。 要回答您的问题,那么选项编号1就是这里发生的事情。我想 发送消息线程立即返回 这是对的 因为Pid!消息只需将消息放入进程Pid的消息队列。进程Pid将使用receive检查其消息队列。这与发送过程无关。在Erlang中,消息传递是异步的。发送者从不阻

我知道Erlang进程消息是同步的。 当我这样做的时候

Pid!信息

  • 发送消息线程立即返回
  • 发送消息线程将确认消息已放入Pid的消息队列,然后返回

  • 发送消息线程将做哪些选择?

    我相信您的理解可能是错误的。Erlang消息传递是异步的。 比如看一看。 要回答您的问题,那么选项编号1就是这里发生的事情。

    我想

    发送消息线程立即返回

    这是对的


    因为
    Pid!消息
    只需将
    消息
    放入进程
    Pid的消息队列
    。进程
    Pid
    将使用
    receive
    检查其消息队列。这与发送过程无关。

    在Erlang中,消息传递是异步的。发送者从不阻塞。不保证消息传递。注意事项:

    • 如果消息传递是一个本地进程,那么在实践中,消息总是很快到达
    • 如果消息传递是远程进程,则消息将排队等待发送。但由于TCP和分发的性质,无法保证消息将由另一方传输和处理

    我的意思是当进程处理自身消息队列时。它是同步的。发送方不一定直接与接收方的邮箱进行交互。即使它们位于同一个Erlang VM上,也可能有中间的传输步骤来避免内部锁。消息传递是完全异步的,甚至不能保证消息已经到达目标邮箱。是的,这就是我所说的异步。我已经更正了我的答案^^@宝条很高兴能帮上忙。如果你认为正确的话,你能接受这个答案吗?我同意您的看法,但是当许多进程希望将消息发送到Pid的消息队列时。进程争夺将消息放入Pid消息队列的权利。因此,一些过程可能会等待片刻。