Browse Source

doAfter 应该在每次事件处理完之后就判断是否需要执行

master
AICells 5 years ago
parent
commit
99163eeae6
1 changed files with 19 additions and 19 deletions
  1. +19
    -19
      src/gen_ipc.erl

+ 19
- 19
src/gen_ipc.erl View File

@ -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) ->

Loading…
Cancel
Save