diff options
Diffstat (limited to 'src/gen_server2.erl')
-rw-r--r-- | src/gen_server2.erl | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/gen_server2.erl b/src/gen_server2.erl index 53edf8de..5b95c545 100644 --- a/src/gen_server2.erl +++ b/src/gen_server2.erl @@ -179,6 +179,8 @@ -import(error_logger, [format/2]). +-define(DRAIN_PER_PROCESS, 1000). + %%%========================================================================= %%% Specs. These exist only to shut up dialyzer's warnings %%%========================================================================= @@ -474,8 +476,13 @@ loop(Parent, Name, State, Mod, Time, TimeoutState, Queue, Debug) -> drain(Queue), Debug). drain(Queue) -> + drain(Queue, ?DRAIN_PER_PROCESS). + +drain(Queue, 0) -> + Queue; +drain(Queue, N) -> receive - Input -> drain(in(Input, Queue)) + Input -> drain(in(Input, Queue), N - 1) after 0 -> Queue end. |