第六步:
不要怀疑系统,首先要怀疑自己的代码
认真观察代码,其大致结构如下:
send_msg(Socket, Pid) ->
try
receive
{send, Bin} ->
......其目的是循环等待数据,然后进行发送,其使用了try...catch捕获异常.
这段代码不是尾递归!...>,
timer:sleep(200),
send_msg(Pid, N-1).
do_t1() ->
erlang:garbage_collect(self()),
Result =erlang...]),
receive
_ ->
do_t2()
end....总结:
1,服务器编程中,循环一定确保为尾递归;
2,尽量使用OTP,如果使用gen_server替换手写loop,就会避免出现该问题。