Erlang进程发送消息

时间:2014-04-23 08:13:36

标签: erlang

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

Pid!消息

  1. 发送消息线程立即返回
  2. 发送消息线程将确认消息已放入Pid的消息队列中,然后返回。
  3. 发送消息线程会做哪个选择?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

在Erlang中,消息传递是异步的。 发件人永远不会阻止。邮件传递保证。注意事项:

  • 如果向本地进程发送消息,那么在实践中,消息总是会到达并且非常快速地完成。
  • 如果向远程进程发送消息,则消息将排队等待发送。但由于TCP和分发的性质,不保证该消息将由另一方传输和处理。

答案 2 :(得分:0)

我认为

  

发送消息线程现在返回。

是对的。

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