这是我的代码:
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
消息。
答案 0 :(得分:7)
这是正确的,除了消息可能不会“立即”处理 - 它被放在消息队列中,队列中的消息将首先被处理。
正如您可能已经想到的那样,这适用于gen_server:cast
和使用!
发送的消息,但不适用于gen_server:call
,这会导致此处出现死锁。