https://www.cnblogs.com/hzy1987/p/5441807.html
http://www.cnblogs.com/me-sa/archive/2011/12/20/erlang0023.html
介绍:
gen_server是OTP的一个behavior, 在behavior基础上快速构建出可用且可靠的功能.
behavior是进程模式的规范化,把代码分成两部分,一部分是通用部分(behavior模块),一部分是定制部分(回调模块).对于gen_server就是要把client/server的模型进行一个抽象和封装,把behavior和回调模块需要完成的职责分离开.
启动流程:
-
调用启动函数, start/3, start/4, start_link/3, start_link/4, 选择其中一个, 这里以常见的start_link/4为例,实际上是调用了gen:start, 第二个参数表示与父节点建立链接,即新启动的进程死掉后,会不会通知启动他的进程(父进程).
-
进入gen:start/6, 首先判断使用Name名字的进程是否已经存在, 若注册了直接返回already_start, 若未注册则调用do_spawn/6,
进入创建进程前的准备.