[erlang-questions] how are erlang process lightweight?

Sean Hinde <>
Tue Oct 3 13:58:05 CEST 2006


On 3 Oct 2006, at 12:25, Ben Dougall wrote:

>
> So that seems to be the thing, so far as memory footprint goes:  
> threads
> have a stack and that stack is, as usual, made up or an indefinite
> number of frames -- potentially many/infinite -- grows per new  
> function
> call. Whereas Erlang processes are tied very tightly (one to one) to
> functions, and a function's memory usage amount to one frame of a
> stack. So an Erlang process is limited to a frame of a stack.

This is where you are going wrong. An erlang function is only related  
to a process in the sense that processes evaluate functions. Each  
process has its own stack that can grow/shrink as much as it needs.

It is not nearly as different to pthreads as you describe. The  
efficiency gains of Erlang are *only* those of being able to optimise  
process switching and do custom memory management. Erlang processes  
are actually more akin to UNIX processes as they do not share state.  
Think of them as exactly like UNIX processes with much less overhead  
and much nicer message passing.

Having the flexibility to implement language specific memory  
management and process switching with custom message passing are big  
wins until UNIX implements the same things directly. I suspect that  
is not likely to happen soon.

Sean






More information about the erlang-questions mailing list