【问题标题】:When should you use an OTP behaviour instead of spawn?什么时候应该使用 OTP 行为而不是 spawn?
【发布时间】:2013-10-09 07:22:47
【问题描述】:

我了解流程的运作方式。并且了解如何实现 gen-server 等 OTP 行为。

但我不清楚我何时会选择一种方法而不是另一种方法。

例如,Cesarini 等人。 al.,在 Erlang Programming 中,通过产生进程、编写循环函数等在第 240 页实现数据库服务器。Joe Armstrong 在 Programming Erlang 中第 196 页的聊天客户端也产生了一个进程。

为什么不能将这些更好地实现为 OTP 生成服务器?是为了教育目的吗?还是有合理的技术原因?

换句话说,哪些经验法则会指导我实施一种方法而不是另一种方法?

非常感谢。

【问题讨论】:

    标签: process erlang erlang-otp


    【解决方案1】:

    在上面的两个示例中,出于教育目的,首选生成的简单过程:这更容易解释,这些作者不必解释 OTP 来传达他们想要教的内容,而且它是无论如何,理解 Erlang 中进程的概念很重要。即使在遵循 OTP 规则的实际应用程序中,也不是所有进程都使用 OTP 行为实现并插入到监督树中。

    经验法则很简单。 通过查看 OTP 设计原则(代码更改、容错等)或是否计划与 OTP 兼容代码集成来确定您是否要遵循 OTP 设计原则。如果您想要它带来的任何功能,请遵循 OTP 原则并避免重新发明轮子。

    如果您坚持 OTP 原则,因此使用 gen_* 行为,您应该为任何 不需要监督或代码升级的短期流程进行简单的衍生。它的生存时间不应超过部署发布的时间(否则,无论如何您都需要soft_purge)。所有其他进程必须插入​​到监督树中,并且可能实现 gen_* 行为。

    【讨论】:

      猜你喜欢
      • 2019-06-15
      • 2011-06-22
      • 2015-12-11
      • 2012-02-12
      • 2012-06-27
      • 2010-11-29
      • 2015-12-23
      • 1970-01-01
      相关资源
      最近更新 更多