在Erlang中,有两种行为看起来非常相似:
-behaviour(gen_server). -behaviour(gen_statem).
实际的区别是什么?我应该在什么时候使用一个而不是另一个?
gg58donl1#
gen_server代表“通用服务器”,它是一个框架/接口,用于构建处理请求和事件的进程。gen_statem代表“通用状态机”,它是一个框架/接口,用于构建作为状态机对事件做出React的流程。您可以在gen_server之上构建一个状态机,或者将单状态状态机用作服务器。要在两者之间做出选择,你应该查看文档中的相关章节,但我会将范围缩小到:如果需要对状态机进行建模,可以考虑gen_statem提供的特性,对于没有花哨功能的简单状态机,gen_server可以很好地工作,而且更简单。
gen_server
gen_statem
1条答案
按热度按时间gg58donl1#
gen_server
代表“通用服务器”,它是一个框架/接口,用于构建处理请求和事件的进程。gen_statem
代表“通用状态机”,它是一个框架/接口,用于构建作为状态机对事件做出React的流程。您可以在
gen_server
之上构建一个状态机,或者将单状态状态机用作服务器。要在两者之间做出选择,你应该查看文档中的相关章节,但我会将范围缩小到:
如果需要对状态机进行建模,可以考虑
gen_statem
提供的特性,对于没有花哨功能的简单状态机,gen_server
可以很好地工作,而且更简单。