<div dir="ltr">Greetings !<br>I read the codes of gen_server.erl and gen.erl in stdlib, the gen_server:call/3 invoke process is illustrated as follows:<br><br>gen_server:call/3 -><br>gen:call/3 -><br>gen:call/4 -><br>
gen:do_call/4 <br><br>in the gen:do_call/4, first check if the target Process is exist by invoke erlang:monitor/2, if the process is alive then send the message, <br>after the messge is sended, invoke the wait_resp_mon/3 to wait the response, if the Mod:handle_call return {reply, Reply, State}, then in wait_resp_mon/3, we can receive the message and return the Reply to the gen_server:call/2 caller. My Question is: If the Mod:handle_call return {noreply, State}, then I see the gen_server continue the loop, not send any message to caller, in that case I think the wait_resp_mon/3 will be blocked, Factually I know the caller not block! Anyone can give me a explain?<br>
<br>thanks!<br>Best Regards!<br></div>