- 同步调用——Call
同步调用——Call
同步请求 alloc() 是使用 gen_server:call/2 实现的:
- alloc() ->
- gen_server:call(ch3, alloc).
ch3 是gen_server的名字,必须和启动时的名字一样。 alloc 是实际的请求。
请求以消息的形式发送给这个gen_server。当收到了请求之后,gen_server调用 handle_call(Request,From,State) ,它应返回一个元组 {reply,Reply,State1}。Reply是需要回馈给客户端的答复,同时 State1 是gen_server的状态的新值。
- handle_call(alloc, _From, Chs) ->
- {Ch, Chs2} = alloc(Chs),
- {reply, Ch, Chs2}.
在这里,应答是分配了的频道 Ch 然后gen_server将等待新的请求,并且现在保持了一个最新的可用频道的列表。