[erlang-questions] process will stack overflow after received many message?
Fri Sep 16 11:05:16 CEST 2011
Your last call to io:format/2 is making the function non tail recursive.
On Fri, Sep 16, 2011 at 10:57 AM, Jovi Zhang <> wrote:
> On Fri, Sep 16, 2011 at 4:44 PM, Robert Raschke <> wrote:
>> On Fri, Sep 16, 2011 at 9:38 AM, Jovi Zhang <> wrote:
>>> I am a newbie of Erlang, here I have a question for receive
>>> message in Erlang loop.
>>> Like below Erlang code, when process receive one message, it will
>>> invoke loop again,
>>> then it can service like a server, receive message forever.
>>> BUT is possible that process will stack overflow after receive too
>>> many message? the process invoke loop again and again.
>>> I saw there have many code write like this in <<Programming Erlang>>
>>> loop() ->
>>> hello ->
>>> Other ->
>>> io:format("I don't know what is this message, ~p is ~n"
>> No stack overflow, due to tail call optimisation. See also
> Thanks, but when I test it using escript, the result is like below,
> "loop end" printed two times, it means it stacked!
> [ Erlang]# cat jovi.erl
> #!/usr/bin/env escript
> loop() ->
> one ->
> two ->
> io:format("loop end\n").
> main(_) ->
> Pid = spawn(fun() -> loop() end),
> Pid ! one,
> Pid ! two,
> _Any -> void
> [ Erlang]# ./jovi.erl
> loop end
> loop end
More information about the erlang-questions