2014-01-27 83 views
3

有了這些事實有關的Erlang消息的時間順序的知識傳遞行爲:二郎消息接收順序

如果進程A發送兩個消息來處理B,然後將兩個消息都保證在順序到達他們被髮送。

如果進程A向進程B發送消息,然後向進程C發送消息,則不能保證它們的接收順序。

同樣,如果進程A & B向C發送消息,則不能保證消息的接收順序。

我的問題是:

什麼是接收訂單,如果過程A和B發送的消息進行處理C,當A和B在相同的(微)時間恰好發送它的消息,以相同的內部功能,在同一節點和同一臺可以運行並行進程的機器上?

回答

5

在這種情況下,您無法對接收訂單做出任何假設。接收訂單將取決於以下因素,例如進程計劃運行的時間,並且可能在相同代碼的不同運行之間有所不同。

+3

正確。在多核機器上,即使您在單個Erlang節點內的進程間傳遞消息,這些進程也可能映射到不同的線程,並可能彼此完全獨立執行。所以這些消息可以以任何順序在C上結束。 – RichardC