Search code examples
concurrencymultithreadingerlangfiber

What are Erlang processes behind the scenes?


I've got very limited knowledge about Erlang, but as far as I understand, it can spawn "processes" with a very low cost.

So I wonder, what are those "processes" behind the scenes?

Are they Fibers? Threads? Continuations?


Solution

  • Also, from the Erlang doc:

    Erlang processes are light-weight (grow and shrink dynamically) with small memory footprint, fast to create and terminate and the scheduling overhead is low.

    Source: http://www.erlang.org/doc/reference_manual/processes.html

    You might also want to have a look to this:

    http://www.defmacro.org/ramblings/concurrency.html

    When talking about Erlang processes, it says:

    Erlang processes are lightweight threads. They're very cheap to start up and destroy and are very fast to switch between because under the hood they're simply functions. A typical Erlang system running on a modern desktop computer can switch between many tens of thousands such processes. Processes are switched every couple of dozen function calls which makes switches less granular but saves a tremendous amount of time normally wasted on context switching.