• 异步请求——Cast

    异步请求——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现在又可以接受新的请求了。