[erlang-questions] time consuming operations inside gen_server

Attila Rajmund Nohl attila.r.nohl@REDACTED
Wed Dec 12 10:42:02 CET 2012


2012/12/12 Martin Dimitrov <mrtndimitrov@REDACTED>:
> Hi all,
>
> In our application, we have a gen_server that does a time consuming
> operation. The message is of type cast thus the caller process doesn't
> sit and wait for the operation to finish. But while the gen_server is
> busy with the cast message, it doesn't serve any other call, right?
>
> So, would it be appropriate to create a process that will do the time
> consuming operation and then notify the gen_server?

The pattern I use in this case is to still use gen_server:call (if the
caller needs to be blocked), start a separate process for the
time-consuming stuff, return {noreply, ...} from the handle_call (so
the gen_server can handle other calls), then call gen_server:reply
from the started process when the time-consuming operation finished.
Of course, the applicability of this pattern depends on what you
actually do.



More information about the erlang-questions mailing list