From 99163eeae603c2cb2382331a8d251c82b584fe9b Mon Sep 17 00:00:00 2001 From: AICells <1713699517@qq.com> Date: Thu, 14 Nov 2019 00:51:28 +0800 Subject: [PATCH] =?UTF-8?q?doAfter=20=E5=BA=94=E8=AF=A5=E5=9C=A8=E6=AF=8F?= =?UTF-8?q?=E6=AC=A1=E4=BA=8B=E4=BB=B6=E5=A4=84=E7=90=86=E5=AE=8C=E4=B9=8B?= =?UTF-8?q?=E5=90=8E=E5=B0=B1=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gen_ipc.erl | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/gen_ipc.erl b/src/gen_ipc.erl index 06b237d..ac15c9a 100644 --- a/src/gen_ipc.erl +++ b/src/gen_ipc.erl @@ -1835,25 +1835,25 @@ list_timeouts(Timers) -> %% 状态转换已完成,如果有排队事件,则继续循环,否则获取新事件 performEvents(CycleData, CurStatus, CurState, Debug, LeftEvents, IsHibernate, DoAfter) -> % io:format("loop_done: status_data = ~p ~n postponed = ~p LeftEvents = ~p ~n timers = ~p.~n", [S#status.status_data,,S#status.postponed,LeftEvents,S#status.timers]), - case LeftEvents of - [] -> - case DoAfter of - {true, Args} -> - %% 这里 IsHibernate设置会被丢弃 按照gen_server中的设计 continue 和 hiernate是互斥的 - startAfterCall(CycleData, CurStatus, CurState, Debug, LeftEvents, Args); - _ -> - reLoopEntry(CycleData, CurStatus, CurState, Debug, IsHibernate) - end; - [Event | _Events] -> - %% 循环直到没有排队事件 - if - IsHibernate -> - %% _ = garbage_collect(), - erts_internal:garbage_collect(major); - true -> - ignore - end, - startEventCall(CycleData, CurStatus, CurState, Debug, LeftEvents, Event) + case DoAfter of + {true, Args} -> + %% 这里 IsHibernate设置会被丢弃 按照gen_server中的设计 continue 和 hiernate是互斥的 + startAfterCall(CycleData, CurStatus, CurState, Debug, LeftEvents, Args); + _ -> + case LeftEvents of + [] -> + reLoopEntry(CycleData, CurStatus, CurState, Debug, IsHibernate); + [Event | _Events] -> + %% 循环直到没有排队事件 + if + IsHibernate -> + %% _ = garbage_collect(), + erts_internal:garbage_collect(major); + true -> + ignore + end, + startEventCall(CycleData, CurStatus, CurState, Debug, LeftEvents, Event) + end end. doReplies([], Debug) ->