[erlang-questions] time consuming operations inside gen_server

Martin Dimitrov mrtndimitrov@REDACTED
Wed Dec 12 10:46:59 CET 2012


Thanks, this sounds very cool.

On 12/12/2012 11:42 AM, Attila Rajmund Nohl wrote:
> 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