erlang gen_server和gen_statem之间有什么区别?

mftmpeh8  于 2022-12-08  发布在  Erlang
关注(0)|答案(1)|浏览(257)

在Erlang中,有两种行为看起来非常相似:

-behaviour(gen_server).
-behaviour(gen_statem).

实际的区别是什么?我应该在什么时候使用一个而不是另一个?

gg58donl

gg58donl1#

gen_server代表“通用服务器”,它是一个框架/接口,用于构建处理请求和事件的进程。
gen_statem代表“通用状态机”,它是一个框架/接口,用于构建作为状态机对事件做出React的流程。
您可以在gen_server之上构建一个状态机,或者将单状态状态机用作服务器。
要在两者之间做出选择,你应该查看文档中的相关章节,但我会将范围缩小到:
如果需要对状态机进行建模,可以考虑gen_statem提供的特性,对于没有花哨功能的简单状态机,gen_server可以很好地工作,而且更简单。

相关问题