异步请求——Cast

异步请求 free(ch) 使用 gen_server:cast/2 实现:

  1. free(Ch) ->
  2. 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状态的新值。

  1. handle_cast({free, Ch}, Chs) ->
  2. Chs2 = free(Ch, Chs),
  3. {noreply, Chs2}.

在这里,新的状态便是更新过的可用频道列表 Chs2 。gen_server现在又可以接受新的请求了。