erlang中有两个延时发送消息的函数erlang:send_after/3, timer:send_after/3,有什么区别呢?
看下timer:send_after/3的源码
send_after(Time, Pid, Message) ->
req(apply_after, {Time, {?MODULE, send, [Pid, Message]}})
req(Req, Arg) ->
SysTime = system_time(),
ensure_started(),
gen_server:call(timer_server, {Req, Arg, SysTime}, infinity)
handle_call({apply_after, {Time, Op}, Started}, _From, _Ts)
when is_integer(Time), Time >= 0 ->
BRef = {Started + 1000*Time, make_ref()},
%返回给调用进程的数据,{到期时间,ref}
Timer = {BRef, timeout, Op},
e