对gen_server的函数只是浏览了下,没仔细看过,这里写一下几个重要函数的参数和返回值
call(ServerRef, Request, Timeout) -> Reply
向ServerRef发起一个call的请求直到回调模块调用Module:handle_call完成该请求并返回或者超时。
ServerRef就是pid,name等等,这里面有个需要注意的参数Timeout,默认值为5000,也可以设置为infinity,当超时时,这个函数抛出错误,如果调用者捕捉到了该错误,那么回调模块函数返回值仍然有可能会到达调用者,这个时候就需要处理消息队列里的消息了。
reply(Client, Reply) -> Reply
当handle_call不返回值时,这个函数明确返回返回值给调用call的client
Client必须是由回调函数提供的From参数
start/start_link(ServerName, Module, Args, Options) -> Result
start函数启动的进程不会作为supervisor的一部分
start_link确保会link到supervisor上面
gen_server调用Module:init/1函数初始化,当Init函数返回时,这个函数才会返回
ServerName是进程的注册名,可以不要,Module是回调模块的名字,Args作为参数传递给init函数
如果进程创建成功,这个函数返回{ok,pid},pid是gen_server进程的Pid
Module:handle_call(Request, From, State) -> Result