Erlang:OTP vs spawn

时间:2013-10-02 19:09:15

标签: process erlang otp

我理解一个过程是如何运作的。我了解如何实现OTP行为,如gen-server等。

但是当我选择一种方法而不是另一种方法时,我并不清楚。

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

为什么这些不能更好地实现为OTP发电机?是出于教育目的吗?还是有合理的技术原因?

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

非常感谢。

1 个答案:

答案 0 :(得分:7)

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

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

如果你坚持OTP原则,因此使用gen_*行为,你应该为任何短期过程做一个简单的生成,不需要监督或代码升级 。它的寿命不会超过部署版本的时间(否则,无论如何都需要soft_purge)。所有其他进程必须插入​​监督树中,并可能实现gen_ *行为。