2014-10-17 70 views
1

同步調用:通話將發送和期待回覆(將阻止當前進程)什麼時候應該做同步或異步發送?

異步調用:通話將發送(慣於阻止當前進程)

雖然我理解這個概念什麼是同步和異步,但是當涉及到將這些概念轉換爲code時,我通常會失敗。

This link解釋瞭如何通過選擇異步調用與其他進程發送數據並同步調用以將數據發送到自身來避免死鎖。

我的問題:在erlang/OTP中製作實際應用程序時,人們如何選擇同步或異步調用。

+0

你能更具體一點嗎?同步和異步呼叫都有其優點。 「阻止所有其他活動」在Erlang中沒有任何意義,同步呼叫只會「阻止」當前進程。 – filmor 2014-10-17 12:12:04

+0

決策,我應該什麼時候阻止我當前的流程,或者我不應該?希望我清楚。 – 2014-10-17 12:17:00

回答

3

我的經驗法則:

  1. - >使用異步消息

  2. - >如果你的過程中需要一個結果,不能做之間,你可以使用同步消息的東西(更易於閱讀)

  3. - >如果你的過程中需要一個結果,並且在使用中使用同步調用

之間不能做任何事
0

當您決定使用什麼,試着問自己這個問題:

  • 我需要調用的結果呢?
  • 呼叫失敗對我來說很重要嗎?我怎麼知道這個?
  • 接收端是否能夠以與它們到達相同的速度處理所有異步呼叫?如果不是,會發生什麼?

關於同步/異步呼叫的一個要點是過載保護。嘗試將程序流劃分爲併發實體,當負載不斷增加時,併發實體必須按比例降低速度,因此您可以估計可以執行的此類工作的單位數。