erlang进程如何与gen行为相关联

时间:2014-01-16 11:04:12

标签: erlang otp

我想知道erlang进程与gen行为有什么关系(gen_server,gen_fsm,gen_event)。例如,gen_server是一个进程,一组进程,或者它们没有任何关系

3 个答案:

答案 0 :(得分:2)

gen_server之类的行为是执行递归函数调用的单个Erlang进程,其中存储了行为的状态。有关详细信息,请参阅my answerErlang/OTP behaviors for beginner

答案 1 :(得分:0)

gen_server是一种'行为'。这是关于模块结构的一些协议。模块中可用的功能,功能的签名,可返回的值等等。

otp架构假设某些进程在该模块上运行。

所以我们可以说 - 如果某个进程在具有gen_server行为的模块上运行,并且由函数启动,则用于启动gen_server(start()或start_link())。

答案 2 :(得分:0)

不同的行为与流程有不同的关系。 gen_servergen_fsm每个实例都有一个进程(您可以让多个进程运行相同的gen_server代码)。而gen_event在调用进程(gen_event:call)的上下文中同步运行handle_event回调,或者在事件管理器进程(gen_event:notify)的上下文中异步运行。

gen行为是为了抽象并发和使用过程来实现这一点。他们是如何做到这一点的,如果进程和gen行为之间存在1:1的关系,则取决于实际gen行为的实现。