erlang gen_server

这篇博客详细介绍了Erlang中gen_server的行为,包括handle_call函数的参数和返回值,start和start_link的区别,gen_server的初始化过程,以及在不同情况下的终止行为和terminate回调函数的使用。gen_server在超时、错误处理和进程通信中扮演关键角色。
摘要由CSDN通过智能技术生成

对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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值