diff --git a/src/gTimer.erl b/src/gTimer.erl index ce39f55..4f60551 100644 --- a/src/gTimer.erl +++ b/src/gTimer.erl @@ -9,7 +9,8 @@ , setTimer/2 , setTimer/3 , getTimer/1 - , delTimer/1 + , asyncDelTimer/1 + , syncDelTimer/1 ]). timerName(Idx) -> @@ -51,6 +52,10 @@ setTimer(Time, MFA, Strategy) -> getTimer(TimerRef) -> erlang:read_timer(TimerRef). --spec delTimer(TimerRef :: reference()) -> false | non_neg_integer(). -delTimer(TimerRef) -> - erlang:cancel_timer(TimerRef) . \ No newline at end of file +-spec asyncDelTimer(TimerRef :: reference()) -> false | non_neg_integer(). +asyncDelTimer(TimerRef) -> + erlang:cancel_timer(TimerRef, [{async, true}, {info, false}]). + +-spec syncDelTimer(TimerRef :: reference()) -> false | non_neg_integer(). +syncDelTimer(TimerRef) -> + erlang:cancel_timer(TimerRef). \ No newline at end of file diff --git a/src/timerWork/gtWork.erl b/src/timerWork/gtWork.erl index 3a4d0a7..ed32e54 100644 --- a/src/timerWork/gtWork.erl +++ b/src/timerWork/gtWork.erl @@ -35,10 +35,11 @@ handleCast(_Msg, _State) -> handleInfo({timeout, TimerRef, MFA}, _State) -> %% 确认Msg格式 然后做分发处理 {M, F, A} = MFA, - try M:F(A, TimerRef) - catch C:R -> - error_logger:error_msg("gTimer timeout error MFA:~p C:~p R:~p~n", [MFA, C, R]) - end, + spawn(M, F, [A, TimerRef]), + % try M:F(A, TimerRef) + % catch C:R -> + % error_logger:error_msg("gTimer timeout error MFA:~p C:~p R:~p~n", [MFA, C, R]) + % end, kpS; handleInfo(_Msg, _State) -> kpS.