[erlang-questions] Re: timer server timeout

johan munk <>
Mon Apr 26 10:17:54 CEST 2010


On Mon, Apr 26, 2010 at 9:57 AM, Ulf Wiger
<>wrote:

>
>
> I never use the internal timeout in gen_server for anything
> much, for this very reason. It can be useful as an inactivity
> timeout, but if you really want to get a reliable timeout since
> a specific point in time, you have to set a timer. Fortunately,
> the timer BIFs are very cheap (don't use the functions in the
> timer module; use erlang:send_after/3 or erlang:start_timer/3.)
>

ah OK - thanks. Only my one-shot timers needs to be more reliable than what
the timer module provide.

I suggest that the doc of the timer module is extended with info about this
gotcha. It says:

"The timeouts are not exact, but should be at least as long as requested."

which holds but one gets the impression that  timeouts are guaranteed (in
finite time).




> BR,
> Ulf W
>
>
>
>  On Wed, Apr 21, 2010 at 10:05 PM, johan munk <> wrote:
>>
>>  Following the control flow in the gen_server, sys, and timer modules I
>>> see
>>> this:
>>> Calling sys:get_status(timer_server) will "reset" the "after time" in the
>>> loop function of gen_server. As the timer server uses that time to get a
>>> timeout if no other messages are received, one can potentially cause
>>> timers
>>> to never trigger.
>>> Is this a known issue/feature?
>>>
>>> /JM
>>>
>>>
>>
>
> --
> Ulf Wiger
> CTO, Erlang Solutions Ltd, formerly Erlang Training & Consulting Ltd
> http://www.erlang-solutions.com
> ---------------------------------------------------
>
> ---------------------------------------------------
>
> WE'VE CHANGED NAMES!
>
> Since January 1st 2010 Erlang Training and Consulting Ltd. has become
> ERLANG SOLUTIONS LTD.
>
> www.erlang-solutions.com
>
>


More information about the erlang-questions mailing list