【问题标题】:Erlang message receiving orderErlang 消息接收命令
【发布时间】:2014-02-18 21:45:26
【问题描述】:

了解有关 Erlang 消息传递行为的时间顺序的这些事实:

如果进程 A 向进程 B 发送两条消息,则保证两条消息按发送顺序到达。

如果进程 A 向进程 B 发送消息,然后向进程 C 发送消息,则无法保证它们的接收顺序。

同样,如果进程 A 和 B 向 C 发送消息,则无法保证接收消息的顺序。

我的问题是:

如果进程 A 和 B 向进程 C 发送消息,当 A 和 B 在相同(微)时间内发送消息时,接收顺序是什么,具有相同的内部功能,在同一个节点和同一个节点中可以运行并行进程的机器?

【问题讨论】:

  • 你从哪里得到这些信息的? (看起来你在引用一本书或其他东西。)我正在研究 Erlang 和并发,我有兴趣从你得到的地方阅读更多内容。 :)

标签: concurrency parallel-processing erlang message-passing


【解决方案1】:

在这种情况下,您也不能对接收订单做出任何假设。接收顺序将取决于诸如进程计划运行时间等因素,并且在同一代码的不同运行之间可能会有所不同。

【讨论】:

  • 没错。在多核机器上,即使您在单个 Erlang 节点内的进程之间传递消息,这些进程也可能映射到不同的线程,并且可以完全独立地执行。所以消息可以以任何顺序在 C 结束。
猜你喜欢
  • 2023-03-31
  • 2021-05-28
  • 2016-03-19
  • 2019-08-27
  • 1970-01-01
  • 2020-10-08
  • 2016-10-04
  • 2013-07-15
  • 1970-01-01
相关资源
最近更新 更多