- 异步请求——Cast
异步请求——Cast
异步请求 free(ch) 使用 gen_server:cast/2 实现:
- free(Ch) ->
- gen_server:cast(ch3, {free, Chr}).
ch3 是gen_server的名称。 {free,Ch} 是实际的请求。
请求被装在一个消息中发给gen_server的 cast ,这调用了 free ,然后返回了 ok 。
当gen_server收到请求之后,它会调用 handle_cast(Request,Stats) ,会返回一个元组 {noreply,State1} 。 State1 是gen_server状态的新值。
- handle_cast({free, Ch}, Chs) ->
- Chs2 = free(Ch, Chs),
- {noreply, Chs2}.
在这里,新的状态便是更新过的可用频道列表 Chs2 。gen_server现在又可以接受新的请求了。