[erlang-questions] embedded timeouts

info <>
Mon Jul 5 15:33:48 CEST 2010


The problem is that the "after Timeout" closure is never called. The loop never stops !
John

info wrote:
> Hi all,
> Why the first timeout never happens ?

Does the function in init/1 receive a message?
If it does, and loop/1 is called, it is no longer inside
the receive clause, and the 'after' clause will not
execute (it simply means, do this if no message has arrived
within Timeout milliseconds).

If no message is sent to the receive clause in init/1,
loop() will never be called.

BR,
Ulf W

> How must be structured this code in order to have two timeouts ?
> 
> init(Timeout)- >
>    receive
>      ...
>      loop(),
>      after Timeout - >
>      ...
>    end.
> 
> loop()- >
>    ...
>    send(Message),
>    receive after 1000 - > 0 end
> loop().
> 


-- 
Ulf Wiger
CTO, Erlang Solutions Ltd, formerly Erlang Training & Consulting Ltd
http://www.erlang-solutions.com


More information about the erlang-questions mailing list