调用gen_server:从Mod:handle_cast转换

时间:2012-12-18 17:07:15

标签: erlang otp

这是我的代码:

handle_cast(start, #state{started = false} = State) ->
    gen_server:cast(self(), add_process),
    {noreply, State#state{started = true}};
handle_cast(add_process, State) -> ...

可以通过gen_server:cast函数调用handle_cast吗?我期望它做的是handle_cast将返回一个新状态,然后立即处理add_process消息。

1 个答案:

答案 0 :(得分:7)

这是正确的,除了消息可能不会“立即”处理 - 它被放在消息队列中,队列中的消息将首先被处理。

正如您可能已经想到的那样,这适用于gen_server:cast和使用!发送的消息,但不适用于gen_server:call,这会导致此处出现死锁。

相关问题