应该何时进行同步或异步发送?

时间:2014-10-17 11:49:18

标签: erlang otp

同步通话:将发送并期待回复的通话。(将阻止当前进程)

异步调用:将发送的调用(不会阻止当前进程)

虽然我理解同步和异步的概念,但是当涉及将这些概念转换为code时,我通常会失败。

This link解释了如何通过选择异步调用来向其他进程发送数据并同步调用以向自身发送数据来避免死锁。

我的问题:在erlang / OTP中制作真实世界的应用程序时,一个人如何选择过度同步或异步调用。

2 个答案:

答案 0 :(得分:3)

我的经验法则:

  1. - >使用异步消息

  2. - >如果你的过程需要一个结果并且不能在两者之间做某事,你可以使用同步消息(更容易阅读)

  3. - >如果您的流程需要一个结果,并且两者之间不能做任何事情,请使用同步调用

答案 1 :(得分:0)

当您决定使用什么时,请尝试自问这个问题:

  • 我需要打电话的结果吗?
  • 如果通话失败对我来说很重要吗?我怎么知道这个?
  • 接收方是否能够以与到达时相同的速度处理所有异步呼叫?如果没有会发生什么?

有关同步/异步调用的一个重要问题是过载保护。尝试将程序流分为并发实体,当负载增加时,这些实体必须按比例减慢,这样您就可以估算出可以执行的这类工作的单位数。