erlang的gen_server

看官方的文档gen_server刚开始看的迷迷糊糊,后来谷歌到这些这些就恍然大悟了

gen_server行为模式

gen_server是开发中最常用的一种模式,使用gen_server时,需在模块中定义behaviour属性为gen_server,并实现回调接口init/1,handle_call/3,handle_cast/2,handle_info/2,code_change/3,terminate/2。

  1. Module:init/1 在进程初始化时调用,其参数为列表,它相当于类的构造函数。调用gen_server:start或gen_server:start_link时会自动回调Module:init/1。init/1执行成功返回{ok,State},State为进程状态,记录进程的内部信息。当进程结束时,会自动回调Module:terminate/2函数,用户可以做相关收尾工作,它相当于类中的析构函数。
  2. handle_cast/2接收gen_server:cast/2发过来的消息。gen_server:cast为异步调用,不需等待处理结果。
  3. handle_call/3接收gen_server:call/2发送的消息,gen_server:call为同步调用,需等待返回结果。
  4. handle_info/2处理进程收到的其他消息,如直接给进程发送的消息 Pid ! Msg。

暂时写这么多,往后再添加

posted @ 2016-09-01 16:08  汪渔  阅读(613)  评论(0编辑  收藏  举报